Hashtable

基本结构:

键(Key):用于标识每个数据项,必须是唯一的,不能为 null。

值(Value):键所对应的数据,可以为 null,也可以重复。 键值对均为object类型,支持任意类型的键值对,但会有拆装箱操作(通常发生在存储和获取值时)。

特点:

  • 键值对存储:每个键都是唯一的,与一个值相关联。
  • 无序存储:键值对的存储顺序与插入顺序无关,由哈希码决定。
  • 哈希算法:通过键的哈希码定位数据存储位置,查找和插入操作的平均时间复杂度为 O(1)。
  • 动态调整容量:当哈希表中元素数目超过容量时,表会动态扩展并重新分配存储。

hashtable是线程安全的,对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型。

Dictionary

基本结构:

键(Key):用于标识每个数据项,必须是唯一的,不能为 null。

值(Value):键所对应的数据,可以为 null,也可以重复。 键值对为泛型结构,支持任意类型的键值对,没有拆装箱操作。

功能与Hashtable相同,但有更好的性能(无拆装箱)。 Dictionary不是线程安全的,需要人为使用lock语句进行保护。

HashSet

是一个优化过的无序集合,其中包含的元素是唯一的。不能做排序操作(无sort方法),无法使用索引来获取数据。只能使用foreach进行迭代。 拥有求元素的交集和并集,差集的方法。