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

看板java作者 (小安)時間19年前 (2006/04/27 23:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串7/9 (看更多)
※ 引述《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)
文章代碼(AID): #14KDr03T (java)
討論串 (同標題文章)
文章代碼(AID): #14KDr03T (java)