加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 用于哈希码的桶查找的算法

发布时间:2020-12-15 04:25:45 所属栏目:Java 来源:网络整理
导读:参见英文答案 What hashing function does Java use to implement Hashtable class?????????????????????????????????????5个 在大多数情况下,HashSet具有查找复杂度O(1).我知道这是因为对象保存在与对象的哈希码相对应的桶中. 查找完成后,它直接进入存储桶
参见英文答案 > What hashing function does Java use to implement Hashtable class?????????????????????????????????????5个
在大多数情况下,HashSet具有查找复杂度O(1).我知道这是因为对象保存在与对象的哈希码相对应的桶中.

查找完成后,它直接进入存储桶并查找(使用等于多个对象存在于同一存储桶中的元素).

我一直在想,它是如何直接进入所需的桶的?哪个算法用于存储桶查找?这对总查找时间没有任何影响吗?

解决方法

从内存:HashSet实际上由HashMap支持,基本的查找过程是:

>拿到钥匙
>哈希(hashcode())
> hashcode%桶的数量
>转到那个桶并评估equals()

对于Set,只有唯一的元素.我建议阅读HashSet的源代码,它应该能够回答你的问题.

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/HashMap.java#HashMap.containsKey%28java.lang.Object%29

另请注意,Java 8代码已更新,此解释涵盖了Java 8之前的代码库.我没有详细检查Java 8实现,只是发现它不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读