类对象的HashSet。什么是哈希?

时间:2013-08-29 02:13:55

标签: java hashset

我注意到在Java中,您可以创建一个包含偶数对象的HashSet。例如,您可以创建一个类(比如class1),其中包含int,double和数组作为变量,然后您可以说 -

HashSet<class1> = new HashSet<>();

很明显,在一个整数的HashSet中,必须使用一个哈希函数,该函数将整数作为输入,并告诉函数将哪个存储桶存入。但对于这个class1变量,究竟是什么进行了哈希?有三个不同的字段(可能没有一个可能是原语)。

2 个答案:

答案 0 :(得分:2)

设置和映射使用的“哈希函数”是hashCode()。除非您明确覆盖hashCode(),否则将使用实现as defined in Object。也就是说,将产生仅基于参考而在字段上根本不存在的散列。

从上面的链接:

  

尽管合理可行,但是由类Object定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java TM 编程语言不需要此实现技术。)

答案 1 :(得分:1)

JVM中只有一个类对象用于给定的类。

类对象的哈希码是“识别哈希” - 根据对象中的实现。