HashSet 的底层实现细节

HashSet 在实现上确实使用了 HashMap 的键(key)部分,而不是值(value)部分。在 HashSet 中,每个元素都被当作 HashMap 的键来存储,而值部分总是同一个静态对象 PRESENT,这是一个 new Object() 的实例。

HashSet 的实现细节

存储机制:
HashSet 底层使用 HashMap 来存储元素。
每个元素都会被当作 HashMap 的键。
所有的值都设为 PRESENT,这是一个静态的 Object 实例。
这样做可以确保 HashSet 中的元素是唯一的,因为 HashMap 保证了键的唯一性。

元素的唯一性:
HashSet 中元素的唯一性是由元素的 hashCode() 和 equals() 方法共同决定的。

当向 HashSet 中添加元素时,它会调用该元素的 hashCode() 方法来计算哈希码,进而确定元素在哈希表中的位置。
如果哈希表中的某个位置已经有元素,HashSet 会调用 equals() 方法来检查是否有其他元素具有相同的哈希码并且相等。
如果找到了相等的元素,则不会添加该元素;否则,元素会被添加到HashMap 中。

内部实现:
HashSet 的内部实现是通过 HashMap 的 KeySet 视图来完成的。
HashSet 的所有操作(如 add, remove, contains 等)实际上是在 HashMap 上进行的。
在这里插入图片描述

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值