HashSet和Set有什么区别?

看到代码片段

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

我想知道Hashset是否是一种特殊的集合。 他们之间的任何区别?

一个Set表示一个通用的“一组值”。 TreeSet是元素sorting(因此sorting)的集合, HashSet是元素sorting或sorting的集合。

HashSet通常比TreeSet快很多。

TreeSet通常以红黑树的forms实现(请参见http://en.wikipedia.org/wiki/Red-black_tree-我没有validationsun / oracle的TreeSet的实际实现),而HashSet使用Object.hashCode()在数组中创build一个索引。 红黑树的访问时间为O(log(n))HashSet访问时间从恒定时间到最差情况(每个项目具有相同的散列码),可以有一个线性search时间O(n)

HashSetSet一个实现。

这个问题已经得到解答,但是我还没有看到为什么代码在相同的代码中提到两种types的答案。

通常情况下,您想要针对在这种情况下设置的接口进行编码。 为什么? 因为如果你总是通过接口引用你的对象(除了新的HashSet()),那么稍后改变对象的实现是微不足道的,如果你发现这样做会更好,因为你只在代码中提到过一次基地(你做了新的HashSet())。

Set是类集合的一般接口,而HashSet是Set接口(使用哈希代码,因此名称)的特定实现。

Set是TreeSet,LinkedHashSet等所有集合类的父接口

HashSet是一个实现Set接口的类。

我想你应该阅读HashSet的javadoc