在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;
我想知道为什么hash
和key
是final
和value
和next
不是?
最佳答案
哈希 - 这是最终的,因为一旦使用哈希值创建节点,它就不会发生意外更改。
key - 仅仅将哈希值作为最终值是没有意义的,因为哈希值是基于 key 的。因此,出于显而易见的原因,哈希和 key 都应该是最终的。
值 - 节点中的值总是可以更改,因此没有必要将其定为最终值。
next - 这只是一个指针,在 HashMap 数据结构中,next 可以随着增长(插入/删除)或重组(重新哈希)而指向不同的映射条目。所以再次强调没有必要将其定为最终版本。但请记住,节点/条目包含的键永远不会改变。
关于Java - 为什么HashMap中的hash和key是最终的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221744/