2014-05-17 43 views
0

谷歌搜索沒有幫助我,所以我來到這裏。 String中int hash32()方法的用法是什麼?顧名思義,它看起來像是一些散列,但它是如何以及在何處使用的?什麼是在String類中使用hash32()?

+0

標準[java.lang.String](http://docs.oracle.com/javase/8/docs/api/java/lang/String.html)沒有這樣的功能,至少沒有公開的功能。 – Philipp

+0

你在什麼版本的Java?如果內存服務,'hash32()'只在某些版本的Java ... – awksp

+0

@ user3580294:1.7.0(七)。 –

回答

5

答案是對的here。這裏有一些選擇片段:

的Java SE 7u6引入了改進,備選哈希函數...

的備選哈希函數提高了這些地圖的實現性能遇到了大量關鍵哈希衝突的時候。

備選散列函數僅適用於String類型的鍵。

如前所述通過@Slanec,爪哇8作了一些修改HashMap對於重碰撞性能下降減少到O(LG N),而不是爲O(n)爲Comparable鍵,所以不再需要替代String哈希。

+2

不奇怪。他們在「HashMap」更聰明後將其刪除。現在,它可以將具有重複哈希的條目鏈接到紅黑樹中,而不是簡單的鏈接列表。這解決了性能問題,因此不再需要'hash32()'。 –

+0

@Slanec哦,這很有趣。我意識到,Java 8的'HashMaps'在可能的情況下在發生大量衝突時使用了樹,但我不知道這是替代散列被刪除的原因。每天學些新東西... – awksp

相關問題