我注意到,在Java中,你可以创建一个包含偶数对象的HashSet。例如,你可以创建一个类(比如1类)包含一个int,double和数组内它的变量,然后你可以说 -类对象的HashSet。什么是散列?
HashSet<class1> = new HashSet<>();
很显然,在一个整数的HashSet的,散列函数必须使用以整数作为输入,并告知函数将哪个存储区存储到该函数中。但对于此class1变量,究竟是什么散列?有三个不同的字段(可能它们都不是原语)。
我注意到,在Java中,你可以创建一个包含偶数对象的HashSet。例如,你可以创建一个类(比如1类)包含一个int,double和数组内它的变量,然后你可以说 -类对象的HashSet。什么是散列?
HashSet<class1> = new HashSet<>();
很显然,在一个整数的HashSet的,散列函数必须使用以整数作为输入,并告知函数将哪个存储区存储到该函数中。但对于此class1变量,究竟是什么散列?有三个不同的字段(可能它们都不是原语)。
设置和映射使用的“散列函数”是hashCode()
。除非您明确覆盖hashCode()
,否则将使用实施as defined in Object
。也就是说,将仅产生基于引用而不是字段的散列。
从上面的链接:
多达是合理可行,通过
Object
类定义的hashCode方法并针对不同的对象返回不同的整数。 (这一般是通过将该对象的内部地址转换成一个整数来实现,但并不由Java TM编程语言不需要这种实现技巧。)
http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#hashCode() - 特别注意圆括号内的部分,接近尾声。 –