2013-08-29 67 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