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添加