線程安全:
? 在堆內存中的數據由于可以被任何線程訪問到,在沒有限制的情況下存在被意外修改的風險
? 如果一段代碼在多個線程同時執行期間,內部能正確運行,則它是線程安全的
? 滿足多個線程訪問相同共享數據的需要
1.Array:
Array類是支持數組實現的基類,但是,只有系統和編譯器才能顯式從 Array 類派生。 用戶應使用該語言提供的數組構造。
特點:
- 類型固定,如:new int[5] { 1, 2, 3, 4, 5 };
- 容量固定,不支持擴容
2.ArrayList:
特點:
- 內部實現基于數組
- 元素為object類型,所以可能會裝箱拆箱
- 支持擴容
3.List<T>
特點:
- 內部實現基于數組
- 泛型
- 支持擴容
4.LinkedList<T> (雙重鏈表)
特點:
- 內部實現基于鏈表
- 泛型
5.Dictionary<TKey,TValue>
特點:
- 內部實現基于hash表,數組buckets下標為hash值,并保存了對應到數組entries的下標,entries保存了Value等信息
- 鏈表法解決哈希沖突
- 泛型
6.Hashtable
特點:
- 非泛型,可能會導致裝箱拆箱
- 支持擴容
- 線程安全
7.HashSet<T>
提供高性能的設置操作
HashSet<T> 可以將類視為 Dictionary<TKey,TValue> 沒有值的集合。
特點:
- 泛型
- 支持擴容
- 不能包含重復元素(內部hash值實現)
- 考慮稻高性能操作,不支持排序
- 提供了許多數學集操作