Java - 为什么HashMap中的hash和key是最终的

标签 java hashmap

在java中,HashMap内部使用Node<K,V>实现 Map.Entry<K,V>并具有以下结构:

static class Node<K,V> implements Map.Entry<K,V> {
        final int hash;
        final K key;
        V value;
        Node<K,V> next;

我想知道为什么hashkeyfinalvaluenext不是?

最佳答案

哈希 - 这是最终的,因为一旦使用哈希值创建节点,它就不会发生意外更改。

key - 仅仅将哈希值作为最终值是没有意义的,因为哈希值是基于 key 的。因此,出于显而易见的原因,哈希和 key 都应该是最终的。

- 节点中的值总是可以更改,因此没有必要将其定为最终值。

next - 这只是一个指针,在 HashMap 数据结构中,next 可以随着增长(插入/删除)或重组(重新哈希)而指向不同的映射条目。所以再次强调没有必要将其定为最终版本。但请记住,节点/条目包含的键永远不会改变。

关于Java - 为什么HashMap中的hash和key是最终的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221744/

相关文章:

java - 如果一个键有多个值,如何将 csv 转换为 Hashmap? (不使用 csv 阅读器)

java - 如何更改正在运行的java进程的优先级?

java - 删除帐户、银行程序

java - 类中的私有(private)静态方法优缺点?

mongodb - map[string]interface{} 自切换到新的 go mongo 驱动程序后未被正确解析

java - HashMap 中的链接

javascript - 仅使用 javascript 捕获 url 上的参数并更改操作表单和链接参数

java - Clojure:定义模式中的 HashMap 和数组映射类型冲突

c# - 将 C# 应用程序转换为 Android - 如何扩展 List<>

java - 在 Java 策略模式中组合策略