当前位置:编程学习 > C#/ASP.NET >>

C# SortedList 和 SortedDictionary集合类型

System.Collections.SortedList 类、System.Collections.Generic.SortedList 泛型类和 System.Collections.Generic.SortedDictionary 泛型类类似于 Hashtable 类和 Dictionary 泛型类,因为它们也实现 IDictionary 接口,但是它们以基于键的排序顺序维护元素,没有哈希表的 O(1) 插入和检索特性。这三个类具有若干共性:

 
  • 三个类都实现 System.Collections.IDictionary 接口。两个泛型类还实现 System.Collections.Generic.IDictionary 泛型接口。

  • 每个元素是一个键/值对,以进行枚举。

    Note注意

    非泛型 SortedList 类在被枚举时返回 DictionaryEntry 对象,而两个泛型类则返回 KeyValuePair 对象。

  • 元素按照 System.Collections.IComparer 实现(对于非泛型 SortedList)或 System.Collections.Generic.IComparer 实现(对于两个泛型类)排序。

  • 每个类提供了返回仅包含键或仅包含值的集合的属性。

下表列举两个排序的列表类与 SortedDictionary 类之间的一些区别。

SortedList 非泛型类和 SortedList 泛型类 SortedDictionary 泛型类

返回键和值的属性是有索引的,从而允许高效的索引检索。

无索引的检索。

检索的运算复杂度为 O(log n)。

检索的运算复杂度为 O(log n)。

插入和移除的运算复杂度一般为 O(n);但是,对于已经处于排序顺序的数据,插入操作的运算复杂度为 O(1),因此每个元素都被添加到列表的末尾。(这假设不需要调整大小。)

插入和移除的运算复杂度为 O(log n)。

比 SortedDictionary 使用更少的内存。

比 SortedList 非泛型类和 SortedList 泛型类使用更多内存。

Note注意

对于包含自己的键的值(例如,包含雇员 ID 编号的雇员记录),可以通过从 KeyedCollection 泛型类派生创建带键的集合,该集合具有列表的一些特征和字典的一些特征。

 

    
补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,