Re: 關於HashSet 加入重覆物件卻成功加入的問題
※ 引述《lin1000 (你是研究生嗎)》之銘言:
: hash.add(o);
: hash.add(o);
: hash.add(o1);
HashSet 可以放同一個物件兩次嗎? :P
我沒有去看 HashSet 的 source code
但是我猜想流程大概是以下這個樣子
1. 呼叫傳入物件的 hashcode(),計算出物件存放的位址
2a. 如果該位址尚未存放其他物件,則將傳入的物件存入。接著結束這個 method。
2b. 若該位址已經有物件,並且是同一個物件 (使用 == ),則結束這個 method。
3. 呼叫 equals(),若回傳 true 不做任何處理,
回傳 false,則存放這個物件
( 我不知道 HashSet 如何處理 hashcode 相同的存放問題,
可能是存再下一個位址,
或著是在同一個位址使用一個 collection 存放兩個以上的物件 )
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.70.65
※ 編輯: tkcn 來自: 220.131.70.65 (04/27 23:15)
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章