2013-08-29 64 views
0

我注意到,在Java中,你可以创建一个包含偶数对象的HashSet。例如,你可以创建一个类(比如1类)包含一个int,double和数组内它的变量,然后你可以说 -类对象的HashSet。什么是散列?

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

很显然,在一个整数的HashSet的,散列函数必须使用以整数作为输入,并告知函数将哪个存储区存储到该函数中。但对于此class1变量,究竟是什么散列?有三个不同的字段(可能它们都不是原语)。

+1

http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#hashCode() - 特别注意圆括号内的部分,接近尾声。 –

回答

2

设置和映射使用的“散列函数”是hashCode()。除非您明确覆盖hashCode(),否则将使用实施as defined in Object。也就是说,将仅产生基于引用而不是字段的散列。

从上面的链接:

多达是合理可行,通过Object类定义的hashCode方法并针对不同的对象返回不同的整数。 (这一般是通过将该对象的内部地址转换成一个整数来实现,但并不由Java TM编程语言不需要这种实现技巧。)

1

有一个在JVM只有一个类对象一个给定的班级。

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

+0

我不认为他指的是'java.lang.Class'。 – arshajii