java源码学习---HashMap
开门见山,直接干 HashMap是java常用的一个集合,每个元素的key经过哈希算法后储存在链表或红黑树的一种键值对数据集合(JDK1.8) 从HashMap新增元素说起 map.put( "key" , "value" ); 这是我们日常向HashMap插入元素的其中一种方式,put(k,v)的源码 public V put( K key, V value) { return putVal( hash (key), key, value, false , true ); } put()会再调用一个putVal(),但是在这之前key会通过hash()计算出对应位置的值,真正的put操作,就是从这里开始 final V putVal( int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node< K , V >[] tab; Node< K , V > p; int n, i; if ((tab = table ) == null || (n = tab. length ) == 0 ) n = (tab = resize()). length ; if ((p = tab[i = (n - 1 ) & hash]) == null ) tab[i] = newNode(hash, key,