2014-01-15 32 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. (如覆盖对方的回答 - 如果要插入的字符串,它们进行比较和排序词汇从左至右)。

相关问题