Re: 關於HashSet 加入重覆物件卻成功加入的問題

看板java作者 (嘿嘿)時間19年前 (2006/04/27 17:18), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/9 (看更多)
※ 引述《Bluesky7 ()》之銘言: : class A{ : int a=0; : public A(int va){a=va;} : public boolean equals(Object o){ : A m=(A)o; : return (a==o.a); : } : public String toString(){...return a 的String} : } : class test{ : main(String[] argc) : { : HashSet<A> set= new HashSet<A>(); : set.add(new A(1)); : set.add(new A(2)); : System.out.println(set); : } : } : 結果印出來是 [1, 2] 第二次被成功加入了 : 可是SUN 的 Spec上明明定義set 重複的不會加入 : More formally, adds the specified element, o, to this set if this set : contains no element e such that (o==null ? e==null : o.equals(e)). : 可是現在看來 好像只有把address相同的才看成一樣 可是我的equals也overrinding了 : 也測過沒錯 : 我哪裡弄錯了嗎 : 請教板友 謝謝 在head first java 那本書上看到過這問題 class A 還需要overrinding過另一個hashCode()這個method 物件相等,似乎是先檢查物件的hashCode,然後才呼叫equal 都相等,才算物件相等 不是很確定…有錯請指正 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.2.170
文章代碼(AID): #14K8nQAJ (java)
討論串 (同標題文章)
文章代碼(AID): #14K8nQAJ (java)