微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

参见英文答案 > 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实现,只是发现它不同.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐