集合类型有:
(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类型。
(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):先进先出
(1)二进制位(bit)的数组;
(2)可使用使用数组byte[]、int[]初始化或指定长度。
(3)可执行位运算。
11、双向链表(LinkedList<>)
(1)每一个元素都指向前一个和后一个。
(2)优点:中间增删比List<>非常快。