线程安全:
• 在堆内存中的数据由于可以被任何线程访问到,在没有限制的情况下存在被意外修改的风险
• 如果一段代码在多个线程同时执行期间,内部能正确运行,则它是线程安全的
• 满足多个线程访问相同共享数据的需要
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值实现)
- 考虑稻高性能操作,不支持排序
- 提供了许多数学集操作