2013-11-24 19 views
-1

像Integer這樣的包裝類像String類一樣是不可變的。包裝類和散列碼緩存

String類緩存它們的哈希碼。

包裝類是否也像String類一樣緩存它們的哈希碼?

+1

源代碼是免費的。 –

回答

3

不,因爲沒有必要。 String.hashCode()String的長度中可能需要時間線性,但包裝類都具有恆定時間,快速的哈希碼實現。

+0

僅供參考:在看到源代碼後,我發現下面的hashcode實現:'public int hashCode(){ return value; }其中,value是由此Integer對象表示的基本int值。 - 一個快速的hashcode()實現 –

+0

True for Integer等等。剛看了看它們的源代碼,並且(在我看到的版本中)BigInteger和BigDecimal不會緩存它們的'hashCode',可能應該。避免將它們作爲Google地圖中的關鍵字。 – user949300

+0

@ user949300:'避免將它們作爲Maps中的鍵 - - 這是整數(包裝類)的聲明還是BigInteger和BigDecimal? –