java hashset 不重复_java – HashSet如何不允许重复?

PRESENT只是一个虚拟值 – 集合并不真正关心它是什么。集合关心的是地图的键。所以逻辑就像这样:

Set.add(a):

map.put(a, PRESENT) // so far, this is just what you said

the key "a" is in the map, so...

keep the "a" key, but map its value to the PRESENT we just passed in

also, return the old value (which we'll call OLD)

look at the return value: it's OLD, != null. So return false.

现在,事实上OLD == PRESENT并不重要 – 并且注意Map.put不会更改键,只是映射到该键的值。由于地图的键是Set真正关心的,Set不变。

事实上,Set的底层结构已经发生了一些变化 – 它用(a,PRESENT)替换了(a,OLD)的映射。但是这不是从Set的实现外部可以看到。 (和发生一样,这种变化甚至不是真正的变化,因为OLD == PRESENT)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值