类型 | Array | ArrayList | List | Dictionary | HashSet<T> |
---|---|---|---|---|---|
长度 | 固定 | 不固定 | 不固定 | 不固定 | 不固定 |
是否泛型 | - | 否 | 是 | 是 | 是 |
申请方式 | new int[] | new ArrayList() | new List<类型> | new Dictionary<键,值> | new Hashtable() |
取值方式 | 下标 | 遍历 | 遍历 | 以键取值 | 以键取值 |
维度 | 多维 | 一维 | 一维 | 一维 | 一维 |
是否提供Sort | 否 | 是 | 是 | 否 | 否 |
单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分。多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减。
Dictionary:
特点:
- 使用其键检索值的速度非常快, 接近 O (1), 因为该类是作为Dictionary<TKey,TValue>哈希表实现的。
- 每个键都必须是唯一的。
HashSet<T>:
特点:
- 提供高性能的设置操作
- 集是不包含重复元素的集合, 其元素无特定顺序。
- 集合未进行排序, 并且不能包含重复元素
补充:
- HashSet<T>可以将类视为Dictionary<TKey,TValue>没有值的集合。
- 如果顺序或元素复制比应用程序的性能更重要, 请考虑结合List<T> Sort使用类和方法
网友评论