HashMap2
HashMap 源码重识
⭐ HashMap 重要的变量
// 默认的初始容量
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
// 最大的容量,且必须是2的倍数
static final int MAXIMUM_CAPACITY = 1 << 30;
// 默认的负载因子
static final float DEFAULT_LOAD_FACTOR = 0.75f;
//链表转成红黑树的默认值
static final int TREEIFY_THRESHOLD = 8;
//反向转换回链表的最大值
static final int UNTREEIFY_THRESHOLD = 6;
//可将其分类为树木的最小桌子容量。(否则,如果bin中的节点过多,则将调整表的大小。)
//至少应为4 * TREEIFY_THRESHOLD,以避免冲突在调整大小和树化阈值之间。
static final int MIN_TREEIFY_CAPACITY = 64;
//该表在首次使用时初始化,并根据需要调整大小。 分配时,长度始终是2的幂。 (在某些操作中,我们还允许长度为零,以允许使用当前不需要的引导机制。)
transient Node<K,V>[] table;
// map 内元素的size
transient int size;⭐ 构造方法
注:
如果我们传入参数为
new HashMap(10);this.threshold = tableSizeFor(initialCapacity);为16当你
new HashMap(17);this.threshold = tableSizeFor(initialCapacity);为32
⭐ Put 方法
Map<String,String> map = new HashMap<>(17);
⭐ resize()方法
⭐ treeifyBin()方法
⭐ Get方法
⭐ getTreeNode
Last updated
Was this helpful?