选择集合类
来源:互联网 发布:java base64源码 编辑:程序博客网 时间:2024/06/03 01:42
一定要谨慎选择 System.Collections 类。选用错误的类型可能限制您使用集合。
考虑以下问题:
-
您是否需要一个序列列表,其中的元素通常在检索其值后被放弃?
-
如果需要,那么在需要先进先出 (FIFO) 行为时请考虑使用 Queue 类或 Queue 泛型类。在需要后进先出 (LIFO) 行为时请考虑使用 Stack 类或 Stack 泛型类。
-
如果不需要,请考虑使用其他集合。
-
-
是否需要以某种顺序访问元素,例如 FIFO、LIFO 或随机访问?
-
Queue 类和 Queue 泛型类提供 FIFO 访问。
-
Stack 类和 Stack 泛型类提供 LIFO 访问。
-
LinkedList 泛型类允许从开头到末尾或从末尾到开头按顺序访问。
-
其余的集合提供随机访问。
-
-
是否需要通过索引访问每一元素?
-
ArrayList 和 StringCollection 类以及 List 泛型类通过元素的从零开始的索引提供对元素的访问。
-
Hashtable、SortedList、ListDictionary 和 StringDictionary 类以及 Dictionary 和 SortedDictionary 泛型类通过元素的键提供对元素的访问。
-
NameObjectCollectionBase 和 NameValueCollection 类以及 KeyedCollection 和 SortedList 泛型类通过其元素的从零开始的索引或者通过其元素的键提供对元素的访问。
-
-
每一元素将包含一个值、一个键和一个值的组合还是一个键和多个值的组合?
-
一个值:使用任何基于 IList 接口或 IList 泛型接口的集合。
-
一个键和一个值:使用任何基于 IDictionary 接口或 IDictionary 泛型接口的集合。
-
带有嵌入的键的一个值:使用 KeyedCollection 泛型类。
-
一个键和多个值:使用 NameValueCollection 类。
-
-
是否需要用与输入元素方式不同的方式对元素排序?
-
Hashtable 类按其元素的哈希代码对元素排序。
-
SortedList 类以及 SortedDictionary 和 SortedList 泛型类根据 IComparer 接口和 IComparer 泛型接口的实现按键对元素排序。
-
ArrayList 提供 Sort 方法,该方法接受 IComparer 实现作为参数。其对应的泛型类(List 泛型类)提供 Sort 方法,该方法接受 IComparer 泛型接口的实现作为参数。
-
-
是否需要信息的快速搜索和检索?
-
对于小集合(10 项或更少),ListDictionary 比 Hashtable 快。SortedDictionary 泛型类提供比 Dictionary 泛型类更快的查找。
-
-
是否需要只接受字符串的集合?
-
StringCollection(基于 IList)和 StringDictionary(基于 IDictionary)都位于 System.Collections.Specialized 命名空间中。
-
此外,通过为泛型类型参数指定 String 类,可以使用 System.Collections.Generic 命名空间中的任何泛型集合类作为强类型字符串集合。
-
请参见
参考
System.CollectionsSystem.Collections.Specialized
System.Collections.Generic
其他资源
创建和操作集合- 选择集合类
- C#集合类选择
- C#集合类选择
- 集合类的选择
- java 集合(6) 选择集合类标准 / Map 接口用法
- 如何选择集合
- 如何选择集合
- 如何选择集合类型
- 对于集合的选择
- 集合的选择
- C#选择集合类需要考虑的问题
- c#中返回类集合或数据表的选择
- 如何选择 Java中的Map List Set等集合类
- hibernate集合操作选择标准
- Java集合选择与区别
- jQuery读取选择结果集合
- java集合的性能选择
- 通过各集合类的特点,选择最佳的使用情境【篇一】
- NHibernate第一讲
- 【快讯】中国史上最大SB事件进入白热化
- 礼仪在身边1
- Building components in MXML
- Building components by using code behind
- 选择集合类
- C/C++头文件一览
- C++语言命令详解- -
- 提高浏览体验的五十个最佳FireFox扩展插件
- 练球 VS 实战
- 30分钟学会STL
- 飞信真的值得推荐de理由
- ASP.NET 应用程序生命周期-MSDN
- Linux那些事儿之我是U盘(7)狂欢是一群人的孤单