作者tkcn (小安)
看板java
标题Re: 关於HashSet 加入重覆物件却成功加入的问题
时间Thu Apr 27 23:14:51 2006
※ 引述《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)