Java 类对象的哈希集。什么是散列?

Java 类对象的哈希集。什么是散列?,java,hashset,Java,Hashset,我注意到,在Java中,您可以创建甚至包含对象的哈希集。例如,您可以创建一个类(比如class1),其中包含int、double和array作为变量,然后您可以说- HashSet<class1> = new HashSet<>(); HashSet=newhashset(); 很明显,在整数的HashSet中,必须使用一个hash函数,该函数将整数作为输入,并告诉函数存储在哪个bucket中。但对于这个class1变量,哈希值到底是什么?有三个不同的字段(可能没有一

我注意到,在Java中,您可以创建甚至包含对象的哈希集。例如,您可以创建一个类(比如class1),其中包含int、double和array作为变量,然后您可以说-

HashSet<class1> = new HashSet<>();
HashSet=newhashset();
很明显,在整数的HashSet中,必须使用一个hash函数,该函数将整数作为输入,并告诉函数存储在哪个bucket中。但对于这个class1变量,哈希值到底是什么?有三个不同的字段(可能没有一个是原语)。

设置和映射使用的“哈希函数”是
hashCode()
。除非显式重写
hashCode()
,否则将使用该实现。也就是说,将生成仅基于引用而不基于字段的哈希

从上面的链接:

Object
定义的hashCode方法会为不同的对象返回不同的整数。(这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要这种实现技术。)

设置和映射使用的“哈希函数”是
hashCode()
。除非显式重写
hashCode()
,否则将使用该实现。也就是说,将生成仅基于引用而不基于字段的哈希

从上面的链接:

Object
定义的hashCode方法会为不同的对象返回不同的整数。(这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要这种实现技术。)


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


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

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


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

-请特别注意括号中靠近末尾的部分。-请特别注意括号中靠近结尾的部分。我认为他指的不是
java.lang.Class
。我认为他指的不是
java.lang.Class