HashSet 和 Set 之间有什么区别?

2022-08-31 10:31:44

看到代码片段像

Set<Record> instances = new HashSet<Record>();

我想知道Hashset是否是一种特殊类型的集合。它们之间有什么区别吗?


答案 1

A 表示一个通用的“值集”。A 是元素排序(并因此排序)的集合,a 是元素排序或排序的集合。SetTreeSetHashSet

A 通常比 快很多。HashSetTreeSet

A通常实现为红黑树(参见 http://en.wikipedia.org/wiki/Red-black_tree - 我还没有验证sun/oracle的实际实现),而a用于在数组中创建索引。红黑树的访问时间是,而a的访问时间范围从常量时间到最坏情况(每个项目都有相同的哈希码),您可以在其中具有线性搜索时间。TreeSetTreeSetHashSetObject.hashCode()O(log(n))HashSetO(n)


答案 2

哈希集的实现。