1.什么是容器,容器怎么用
我觉得容器的意义就是装东西,能装东西的就是容器
ArrayList是可变长数组,你可以将任意多的数据Add到ArrayList里面。其内部维护的数组,当长度不足时,会自动扩容为原来的两倍。
但是ArrayList也有一个缺点,就是存入ArrayList里面的数据都是Object类型的,所以如果将值类型存入和取出的时候会发生装箱、拆箱操作(就是值类型与引用类型之间的转换),这个会影响程序性能。在.Net 2.0泛型出现以后,就提供了List
List
就性能来说,如果要存进数组的只有一种数据,那么无疑List
List ListInt = new List();
如果一个变长数组,又要存int,又要存string。那么就只能用ArrayList。
HashTable是一种根据key查找非常快的键值数据结构,不能有重复key,而且由于其特点,其长度总是一个素数,所以扩容后容量会比2倍大一点点,加载因子为0.72f。
当要大量使用key来查找value的时候,HashTable无疑是最有选择,HashTable与ArrayList一样,是非泛型的,value存进去是object,存取会发生装箱、拆箱,所以出现了Dictionary
Dictionary
Dictionary Dic = new Dictionary();
HashSet
Queue队列,Queue
Stack堆栈,先进后出。
SortedList集合中的数据是有序的。可以通过key来匹配数据,也可以通过int下标来获取数据。
添加操作比ArrayList,Hashtable略慢;查找、删除操作比ArrayList快,比Hashtable慢。
SortedDictionary
List
ListDictionary是单向链表。
LinkedList
HybridDictionary的类,充分利用了Hashtable查询效率高和ListDictionary占用内存空间少的优点,内置了Hashtable和ListDictionary两个容器,添加数据时内部逻辑如下:
当数据量小于8时,Hashtable为null,用ListDictionary保存数据。
当数据量大于8时,实例化Hashtable,数据转移到Hashtable中,然后将ListDictionary置为null。
BitArray这个东东是用于二进制运算,"或"、"非"、"与"、"异或非"等这种操作,只能存true或false;
ArrayList,List
HashTable,Dictionary
HashSet
Queue、Queue
Stack、Stack
SortedList、SortedList
ListDictionary:单向链表,每次添加数据时都要遍历链表,数据量大时效率较低,数据量较大且插入频繁的情况下,不宜选用。
LinkedList
HybridDictionary:未知数据量大小时,可用。
SortedDictionary
BitArray:二进制运算时可选用;
引用:https://www.cnblogs.com/TravelingLight/p/12172850.html