JAVA集合類(lèi)總結(jié)
l HashSet:如果集合中對(duì)象所屬的類(lèi)重新定義了equals()方法,那么這個(gè)類(lèi)也必須重新定義hashCode()方法,并且保證當(dāng)兩個(gè)對(duì)象用equals()方法比較的結(jié)果為true時(shí),這兩個(gè)對(duì)象的hashCode()方法的返回值相等。
l TreeSet:如果對(duì)集合中的對(duì)象進(jìn)行自然排序,要求對(duì)象所屬的類(lèi)實(shí)現(xiàn)Comparable接口,并且保證這個(gè)類(lèi)的compareTo()和equals()方法采用相同的比較規(guī)則來(lái)比較兩個(gè)對(duì)象是否相等。
l HashMap:如果集合中鍵對(duì)象所屬的類(lèi)重新定義了equals()方法,那么這個(gè)類(lèi)也必須重新定義hashCode()方法,并且保證當(dāng)兩個(gè)鍵對(duì)象用equals()方法比較的結(jié)果為true時(shí),這兩個(gè)鍵對(duì)象的hashCode()方法的返回值相等。
l TreeMap:如果對(duì)集合中的鍵對(duì)象進(jìn)行自然排序,要求鍵對(duì)象所屬的類(lèi)實(shí)現(xiàn)Comparable接口,并且保證這個(gè)類(lèi)的compareTo()和equals()方法采用相同的比較規(guī)則來(lái)比較兩個(gè)對(duì)象是否相等。
由此可見(jiàn),為了使應(yīng)用程序更加健壯,在編寫(xiě)JAVA類(lèi)時(shí)不妨養(yǎng)這樣的編程習(xí)慣:
l 如果JAVA類(lèi)重新定義了equals()方法,那么這個(gè)類(lèi)也必須重新定義hashCode()方法,并且保證當(dāng)兩個(gè)對(duì)象用equals()方法比較的結(jié)果為true時(shí),這兩個(gè)對(duì)象的hashCode()方法的返回值相等。
l 如果JAVA類(lèi)實(shí)現(xiàn)了Comparable接口,那么應(yīng)該重新定義compareTo(),equals()和hashCode()方法,保證compareTo()和equals()方法采用相同的比較規(guī)則來(lái)比較兩個(gè)對(duì)象是否相等,并且保證當(dāng)兩個(gè)對(duì)象用equals()方法比較的結(jié)果為true時(shí),這兩個(gè)對(duì)象的hashCode()方法的返回值相等。posted on 2008-03-12 14:29 秋楓故事 閱讀(250) 評(píng)論(0) 編輯 收藏