美文网首页
HashMap 对于key是null值的存储

HashMap 对于key是null值的存储

作者: 错对对 | 来源:发表于2019-01-10 10:56 被阅读0次

HashMap 允许插入键为 null 的键值对。但是因为无法调用 null 的 hashCode() 方法,也就无法确定该键值对的桶下标,只能通过强制指定一个桶下标来存放。HashMap 使用第 0 个桶存放键为 null 的键值对。
1.6版本 :

public V put(K key, V value) {
        if (key == null)
            return putForNullKey(value);
        int hash = hash(key.hashCode());
        int i = indexFor(hash, table.length);
        for (Entry<K,V> e = table[i]; e != null; e = e.next) {
            Object k;
            if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
                V oldValue = e.value;
                e.value = value;
                e.recordAccess(this);
                return oldValue;
            }
        }

        modCount++;
        addEntry(hash, key, value, i);
        return null;
    }
private V putForNullKey(V value) {
    for (Entry<K,V> e = table[0]; e != null; e = e.next) {
        if (e.key == null) {
            V oldValue = e.value;
            e.value = value;
            e.recordAccess(this);
            return oldValue;
        }
    }
    modCount++;
    addEntry(0, null, value, 0);
    return null;
} 

1.8版本中在获取hash值时做处理

        int h;
        return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
    }

相关文章

  • HashMap 对于key是null值的存储

    HashMap 允许插入键为 null 的键值对。但是因为无法调用 null 的 hashCode() 方法,也就...

  • hashmap学习小结

    1.HashMap是基于Map接口实现的一种键-值对的存储结构,允许null值,同时非有序,...

  • HashMap1.7和1.8的实现原理

    概述 HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null键和null值,因为key不允...

  • 关于HashMap的理解

    1.谈一下HashMap的特性? 1.HashMap存储键值对实现快速存取,允许为null。key值不可重复,若k...

  • HashMap

    1.谈一下HashMap的特性? 1.HashMap存储键值对实现快速存取,允许为null。key值不可重复,若k...

  • java.util.HashMap(JDK1.8)

    定义 HashMap 是一个键值对的集合,key值允许为null,key值不允许重复。value可重复,可null...

  • HashMap源码解析

    HashMap特点 存储键值对的 允许null值和null键 HashMap是非synchronized 创建 H...

  • jvtool笔记

    1、----高度注意各种Map类集合Key/Value能不能存储null值的情况 由于HashMap的干扰,很多人...

  • HashMap源码解析

    HashMap 存储 key-value 映射关系 HashMap中key值可以为空 HashMap扩容策略为每次...

  • Java8-HashMap实现原理<一>

    HashMap 是用于存储key,value 键值对信息数据的,key 和 Value 都可以为NULL。Java...

网友评论

      本文标题:HashMap 对于key是null值的存储

      本文链接:https://www.haomeiwen.com/subject/aivorqtx.html