2014-01-15 58 views
0
  1. 有人能解釋,爲什麼我們必須實現hashCode()和equals()方法,每次我們寫一個新班?爲新類編寫hashCode()和equals()是一個很好的習慣嗎?我們爲什麼要重寫equals()和hashCode()方法,如何哈希碼工作在HashMap和TreeSet的操作

  2. hashcode()如何在hashMap中工作?

  3. 爲什麼TreeSet類似?

"102. Hello one o two" 
"12. Hello twelve" 
"1. Hello One" 

以下列方式

"1. Hello One" 
"102. Hello one o two" 
"12. Hello twelve" 

在此先感謝。

+1

http://en.wikipedia.org/wiki/Hash_table – SLaks

+1

你看過JavaDoc的這些方法嗎? - http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode() –

+0

和https://stackoverflow.com/questions/18415104/why-is-there -a-need-to-override-hashcode-if-i-override-equals-method-in-java?rq = 1 – keshlam

回答

0
  1. 如果未被覆蓋,您將繼承在Object上定義的那些版本,這些版本僅在對象標識而不是對象的值上工作。作爲對象的設計者,您可以根據平等測試的目的說出其「價值」,並定義與該定義相符的適當的.equals()和.hashCode操作。

  2. https://stackoverflow.com/questions/1894377/understanding-the-workings-of-equals-and-hashcode-in-a-hashmap?rq=1

  3. (如覆蓋對方的回答 - 如果要插入的字符串,它們進行比較和排序詞彙從左至右)。

相關問題