Re: 關於HashSet 加入重覆物件卻成功加入的問題
※ 引述《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
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章