Java 8 中字符串键的替代哈希是什么?
2022-09-04 19:23:40
Java 8 为 String 键提供了替代散列,以便在遇到大量键散列代码冲突时提高性能。任何人都可以解释这是什么以及它将如何工作?
Java 8 为 String 键提供了替代散列,以便在遇到大量键散列代码冲突时提高性能。任何人都可以解释这是什么以及它将如何工作?
为了与这个问题更加相关,替代散列已从 JDK 8 中删除。退房:
http://docs.oracle.com/javase/8/docs/technotes/guides/collections/changes8.html
http://openjdk.java.net/jeps/180
有趣的是,一旦哈希存储桶中的项目数增长到超过某个阈值,该存储桶将从使用条目链接列表切换到平衡树。
HashMap 中的 hash(Object key) 函数已修订为以下函数,对 String 对象没有特殊处理:
static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
从这封电子邮件中:core-lib-devs@openjkd
- 引入了一个新的接口Hashable32。
- Hashable32 提供了一个 hash32()
- 字符串实现 Hashable32 和 hash32() 方法
- HashMap等人识别String并调用hash32()而不是hashCode()
代码的修订: