C# Collection 集合

集合类型有:

(1)数组、动态数组(ArrayList)、列表(List<>);
(2)哈希表(Hashtable)、排序列表(SortedList)
(3)堆栈(stack)、队列(queue);
(4)点阵列(BitArray)
(5)泛型集合:(命名空间:System.Collections.Generic)
          List<>、HashSet<>(不重复值集合)、Dictionary<>(键值对);
          SortedList<>、SortedSet<>、SortedDictionary<>;(有序)
          Stack<>、Queue<>;
          LinkedList<>(双向链接列表)。

1、数组

数组的集合类型是int[],不是Array类。Array不是集合类型,它是所有数组类型的基类,提供了数组操作的各种属性和方法。

2、动态数组(ArrayList)

缺点:
(1)ArrayList存储object类型、在操作数据时可能会发生类型不匹配异常、它是非类型安全的对象。
(2)存储的是object类型,所以在使用的时候需要类型转换,会装箱拆箱、从而损耗性能。

3、列表(List<>):泛型集合,类型安全。

4、堆(HashSet<>):无重复值(List可以有重复值)。

(1)添加元素时要检查重复,所以添加比List慢。
(2)元素按桶方式进行Hash维护,查找删除比List快。
(3)设计用来做高性能集运算,例如对两个集合求交集、并集、差集等。

5、哈希表(HashTable):

(1)存储的是键-值对,使用键来访问集合中的元素。
(2)键和值都是object类型。

6、排序列表(SortedList)

(1)排序列表是动态数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果使用索引访问各项,则是一个动态数组(ArrayList);如果使用键访问各项,则它是一个哈希表(Hashtable)。
(2)排序列表是有序的,按键值排序(有序的哈希表)。

7、字典(Dictionary<>):

(1)存储的是键-值对,使用键来访问集合中的元素。
(2)Dictionary与HashTable区别:
          01. Dictionary是泛型,HashTable元素是Object类型。所以Dictionary类型安全,无需强制转换,代码健壮性可读性好;无装箱拆箱操作,速度快。
          02. HashTable线程安全,默认的HashTable允许单线程写入,多线程读取,对HashTable进一步调用synchronize方法可以获得线程安全的类型,而Dictionary非线程安全,必须使用lock语句进行保护。
          03. 单线程操作优先使用Dictionary<>,多线程操作优先使用HashTable。

8、堆栈(Stack):先进后出

9、队列(Queue):先进先出

10、点阵列(BitArray)

(1)二进制位(bit)的数组;
(2)可使用使用数组byte[]、int[]初始化或指定长度。
(3)可执行位运算。

11、双向链表(LinkedList<>)

(1)每一个元素都指向前一个和后一个。
(2)优点:中间增删比List<>非常快。

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页