java - 什么是 Java 8 中字符串键的替代哈希?

标签 java collections hashmap hash hashcode

Java 8 正在为字符串键提供替代哈希,以在遇到大量键哈希代码冲突时提高性能。谁能解释一下那是什么以及它是如何工作的?

最佳答案

为了使这个问题更具相关性,替代哈希已从 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);
}

关于java - 什么是 Java 8 中字符串键的替代哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11946486/

相关文章:

java - 如何使用 FCM 在 android 中将 token 配置为 token 通知?

java - 使用 Guava ForwardingList 装饰集合的意外行为

java - 要映射的计时器类

java - 从 Java HashMap 获取 Integer 值时是否需要调用 intValue() 方法?

data-structures - 什么时候会重新散列链接哈希表?

java - 此方法(setSize、setDefaultCloseOperation... 对于 HelloFrame 类型未定义

java网络接受线程之间的网络连接

java - 从部署到已运行的 Tomcat 8 实例的 Spring Boot WAR 文件中获取 Tomcat 运行的端口

java - 在添加到两个暗列表之前,使用 java 中的 contains 来检查重复项

java - 为什么需要对哈希码进行转换来获取哈希值,这对于所有键来说都是一个好主意吗?