Array/ArrayList/List/LinkedList/Queue/Stack/HastSet/SortedSet/Hashtable/SortedList/Dictionary/SortedDictionary
數組(在內存上連續分配,讀取快,增刪改慢,可坐標訪問)
一:Array-----在內存上連續分配的,而且元素類型是一樣的,可以坐標訪問,讀取快,增刪改慢,長度不變
二:ArrayList------不定長度,連續分配的,元素沒有類型限制,任何元素都是當作 object處理,如果是值類型會有裝箱操作,索引賦值不會增加長度會出錯
三: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();
五:Queue------先進先出,可用來放任務延遲執行(A不斷寫入B不斷獲取)
1:Dequeue方法是移除,Peek方法不移除
六:Stack-------先進后出
1:Pop方法是移除,Peek方法不移除
集合(Hash分布,元素間沒關系,動態增加容量,去重)
七:HashSet-------可用在間接關注/粉絲合集
- hashSet1.SymmetricExceptWith(hashSet);//補
- hashSet1.UnionWith(hashSet);//並
- hashSet1.ExceptWith(hashSet);//差
- hashSet1.IntersectWith(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添加
