Array/ArrayList/List/LinkedList/Queue/Stack/HastSet/SortedSet/Hashtable/SortedList/Dictionary/SortedDictionarynode
数组(在内存上连续分配,读取快,增删改慢,可坐标访问)数组
一:Array-----在内存上连续分配的,并且元素类型是同样的,能够坐标访问,读取快,增删改慢,长度不变安全
二:ArrayList------不定长度,连续分配的,元素没有类型限制,任何元素都是看成 object处理,若是是值类型会有装箱操做,索引赋值不会增长长度会出错spa
三:List-------核心本质也是Array,内存上都是连续摆放不定长的(连续摆放的均可以用索引访问),泛型(保证类型安全避免装箱拆箱)线程
链表(元素不连续分配每一个元素都有记录先后节点,增删快,查慢)对象
四:LinkedList--------泛型的特色,元素不连续分配,每一个元素都有记录先后节点,不能下标访问,找元素就只能遍历,查找不方便,增删方便排序
LinkedList<int> linkedList = new LinkedList<int>();
//linkedList[3] 不可下标访问
linkedList.AddFirst(123); 添加方式
linkedList.AddLast(456);索引
bool isContain = linkedList.Contains(123);
LinkedListNode<int> node123 = linkedList.Find(123); //元素123的位置 从头查找
linkedList.AddBefore(node123, 123);
linkedList.AddAfter(node123, 9);内存
linkedList.Remove(456);
linkedList.Remove(node123);
linkedList.RemoveFirst();
linkedList.RemoveLast();
linkedList.Clear();hash
五:Queue------先进先出,可用来听任务延迟执行(A不断写入B不断获取)
1:Dequeue方法是移除,Peek方法不移除
六:Stack-------先进后出
1:Pop方法是移除,Peek方法不移除
集合(Hash分布,元素间不要紧,动态增长容量,去重)
七:HashSet-------可用在间接关注/粉丝合集
八:SortedSet-----可排序
Key-Value(增删改快,浪费了空间,数据量大的话效率会低,非线程安全)
九:Hashtable------key-value形式,无序,体积能够动态增长,拿着key计算一个地址而后放入key-vlaue,都是object有装箱拆箱,若是不一样的key获得相同的地址,第二个在前面的地址上+1,查找 的时候若是地址对应的数据Key不对就+1查找;浪费了空间,若是数据太多重复定位效率就下去了,是基于数组实现,增删查改数据一次定位速度快。线程安全(只有一个线程写多个线程读)
十:Dictionary------有序,数据太多的话效率就会降低,非线程安全,ConcurrentDictionary这个是线程安全的字典
十一:SortDictionary-----排序
十二:SortedList-------排序,不能Add()重复添加相同的key
线程安全的
ConcurrentQueue 线程安全版本的Queue
ConcurrentStack线程安全版本的Stack
ConcurrentBag线程安全的对象集合
ConcurrentDictionary线程安全的Dictionary
BlockingCollection
若是实现了IList了的就能够用下标访问,实现IConllection了的能够用Add添加