源码剖析-JDK 1.8
本专栏主要是研究JDK1.8源码,探究其实现细节和设计思想
Ability Liao
学习&总结&分享
展开
-
HashMap源码(jdk1.8)-数组初始化和扩容
数组初始化和扩容时,将调用resize()方法,源码和分析如下所示: final Node<K,V>[] resize() { // 1、设置数组容量和阈值 Node<K,V>[] oldTab = table; int oldCap = (oldTab == null) ? 0 : oldTab.length; int oldThr = threshold; int newCap, newThr = 0; if (oldCap >原创 2020-05-09 22:34:54 · 394 阅读 · 0 评论 -
HashMap源码(jdk 1.8)- get操作
源码和解析如下所述 public V get(Object key) { Node<K,V> e; return (e = getNode(hash(key), key)) == null ? null : e.value; } final Node<K,V> getNode(int hash, Object key) { Node<K,V>[] tab; Node<K,V> first, e; int n; K k; i原创 2020-05-13 19:58:33 · 210 阅读 · 0 评论 -
HashMap源码(jdk 1.8)-数据存储 put()
HashMap存储数据时,调用put方法,源码及分析如下所示: public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } /** * Implements Map.put and related methods. * * @param hash hash for key * @param key the key * @param value the value to put原创 2020-05-09 23:06:53 · 225 阅读 · 0 评论