为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 HashSet 不能直接在内部使用位数组而不是 HashMap 来节省一些空间?

为什么 HashSet 不能直接在内部使用位数组而不是 HashMap 来节省一些空间?

一只斗牛犬 2022-12-21 10:09:56
我看到 Java 中的 HashSet 在内部使用 HashMap 来检查 HashSet 是否包含元素。它不能只使用位图来存储字符串的所有哈希结果吗?例如。字符串 abc 散列为 12 个索引,我们可以设置此索引以表明它存在。与 HashMap 相比,它会节省大量空间,因为我们不必在数据中存储实际的键。
查看完整描述

1 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

如果 HashSet 仅用于 contains() 查找,那么这样的优化是可能的。它仍然很危险,因为散列冲突总是会发生。我认为您正在寻找的是布隆过滤器(请注意,布隆过滤器不会给出确切的答案,它只是排除漏报)。

Hash Set 是一个集合,集合需要有可能检索存储的值。哈希是不可逆的,你不能从它的哈希中计算出原始字符串。


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号