我正在浏览 Introduction of Algorithms by Cormen et al视频,它讨论了几个散列函数。我想知道 Java 默认使用什么哈希函数?对于用作键的不同类型的对象,哈希函数实际上是否不同? Collections 框架中是否有一个 api 可以让我们编写自己的哈希算法?
最佳答案
Java 中的每个对象都有一个返回散列的public int hashCode()
方法。每个对象都可以通过覆盖该方法以自己的方式自由实现它。如果该方法未被覆盖,则 default Object#hashCode
method被使用。
您可以查看各种对象的源代码,了解它们在 JDK 中是如何实现的。这是 String's hashCode例如(第 1494 行)。
某些集合可以在对象的 hashCode 方法之上添加额外的哈希层。例如,当对象的 hashCode 分布不均时,HashMap 会这样做以提高性能。
关于java - Java 默认使用什么哈希函数,我们可以覆盖默认行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11991589/