C#数据结构

线程安全:
• 在堆内存中的数据由于可以被任何线程访问到,在没有限制的情况下存在被意外修改的风险
• 如果一段代码在多个线程同时执行期间,内部能正确运行,则它是线程安全的
• 满足多个线程访问相同共享数据的需要

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值实现)
  • 考虑稻高性能操作,不支持排序
  • 提供了许多数学集操作

8.SortedDictionary

9.SortedList

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容