哈希表的 map.put(key,value);方法怎么用图形理解啊
百度上说数组里存哈希值,然后接着链表/红黑树。那链表/红黑树里存的是value的话,key是不是存了数组内元素的地址,然后访问key就会访问访问到相应数组中的元素哈希值?那和直接存value不用哈希值,有啥区别啊
哈希表的 map.put(key,value);方法怎么用图形理解啊
百度上说数组里存哈希值,然后接着链表/红黑树。那链表/红黑树里存的是value的话,key是不是存了数组内元素的地址,然后访问key就会访问访问到相应数组中的元素哈希值?那和直接存value不用哈希值,有啥区别啊
首先链表元素存的不是value,而是存的内部类Map.Node(K,V),其次节点在数组的下标运算是用key的hashCode进行一定的运算得到的。具体的运算方法可以看下这篇
从源码看HashMap
前言:HashMap是基于Hash表的Map接口实现,允许空值和空键,非线程安全的Map。HashMap不保证顺序,不保证顺序不仅仅是指存储顺序可能与插入顺序不同,还包括元素的存储位置可能会随着对实例的使用而变换。从源码看HashMap前言:1 HashMap的参数1.1 容量1.1.1 默认初始容量1.1.2 最大扩容容量1.1.3 最小树化容量1.2 装载因子1.2.1 默认装载因子1.3 阈值1.3.1 扩容阈值1.3.2 树化阈值1.3.3 树退化阈值1.4 大小1.5 modCountHash
https://blog.csdn.net/yue_hu/article/details/112648241
博文的4 HashMap的下标计算算法。如果想对HashMap的实现能有进一的了解,我建议你可以花几分钟把这篇博文看完。