本文主要讨论jdk1.7下hashMap的源码实现,其中主要是在扩容时容易出现死循环的问题,以及put元素的整个过程. 1.数组结构 数组+链表 示例图如下: 常量属性 /** * The default initial capacity - MUST be a power of two. * 默认初始容量大小 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** * MUST be a power of tw…
HashMap 源码分析 基于jdk1.8分析 1:数据结构: transient Node<K,V>[] table; //这里维护了一个 Node的数组结构: 下面看看Node的数据结构,Node是它的一个内部类: static class Node<K,V> implements Map.Entry<K,V> { final int hash; //hash值 final K key; //key V value; //value Node&…