数据结构
Array 数组
缺点
1在数组的两个数据间插入数据是很麻烦的,
2声明数组的时候必须指定数组的长度,
3数组的长度过长,会造成内存浪费,过段会造成数据溢出的错误。
ArrayList 数组 是个接口
1装箱拆箱 效率低
2数据类型不安全
List 数组
缺点
1个List<T> 本质上是将其可能是吧整个list拆分成多个数据保存在一个堆栈的数组上,
因为这个是一个数组,所以其对插入和删除这类的操作效率并不高
优点
1List<T> 性能优于LinkedList<T>的地方是你在使用索引进行访问的时候
2在List<T> 中增加、删除节点的速度,大体上快于使用LinkedList<T> 时的相同操作
LinkedList 双向链表
缺点
1LinkedList<T> 中,你必须通过Previous或Next属性遍历整个List 查找慢
优点
1而LinkedList<T> 是将其所有节点保存在堆栈上
SortedList<TKey, TValue> 链表
优点
当你要维护一个集合按一定规则排序时(初始如果是排序的),并且只会频繁的查询,而很少插入和 删除的话,推荐使用此集合。
HashSet Hash表
特点
提供了高性能的集运算。一组是一个集合,不包含任何重复的元素,且的元素顺序不分先后。
1提数学操作设置 等方法 确定 set 是否相等、 重叠的集 组添加 (联合),并设置减法
HashTable Hash表
特点
HashTable中的被占用空间达到一个百分比的时候就将该空间自动扩容 .net中这个百分比是72% 扩容大小是当前空间大小的两倍最接近的素数
表示根据键的哈希代码进行组织的键/值对的集合
缺点
1 拆箱 装箱
优点
1可以通过Hashtable tab = Hashtable.Synchronized(new Hashtable()); 获得线程安全的对象。
Dictionary Hash表
特点
当你维护的一个集合不要求排序,而主要用来插入、删除和查询的话,推荐使用此集合。
单线程的时候使用Dictionary更好一些
Queue<T> 队列
特点
默认情况下,Queue<T> 的初始容量为32, 增长因子为2.0。,容量增长2倍。
Stack<T>
特点
默认容量为10。
SortedDictionary 红黑树
SortedList 内部由一个排序后的数组对实现
可以通过索引或键获取元素
优点
是可对未排序的数据执行更快的插入和删除操作(O(log n))
缺点
是使用的内存比SortedList<TKey, TValue> 多,并且如果使用排序数据一次性填充列表,则 SortedList<TKey, TValue> 比 SortedDictionary<TKey, TValue> 快。
SortedSet 线性表