C# 集合整理

    技术2022-05-12  36

    StringCollection,Array,ArrayList,IList,Item,Queue,Stack,Hashtable,SortedList

               当需要大小可按需动态增加,并希望通过索引来进行访问的数组的时候,使用ArrayList .           当需要一个能实现后进先出的集合时,使用Stack.           当需要一个先进先出的集合时,使用Queue.           当需要一个可以按Key值来查询的数组是,使用Hashtable.           当需要一个按顺序排列的集合时,SortedList.Csdn Help:

    一定要谨慎选择  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  命名空间中的任何泛型集合类作为强类型字符串集合。


    最新回复(0)