HashMap 源码分析

static final int DEFAULT_INITIAL_CAPACITY = 16;  默认容量

static final int MAXIMUM_CAPACITY = 1073741824; 最大容量

static final float DEFAULT_LOAD_FACTOR = 0.75F; 增长因子

// 这是一个阈值,当桶(bucket)上的链表数大于这个值时会转成红黑树,put方法的代码里有用到
static final int TREEIFY_THRESHOLD = 8;
 
// 也是阈值同上一个相反,当桶(bucket)上的链表数小于这个值时树转链表
static final int UNTREEIFY_THRESHOLD = 6;
 
// 看源码注释里说是:树的最小的容量,至少是 4 x TREEIFY_THRESHOLD = 32 然后为了避免(resizing 和 treeification thresholds) 设置成64
static final int MIN_TREEIFY_CAPACITY = 64;
 
// 每次扩容和更改map结构的计数器
transient int modCount;
 
// 临界值 当实际大小(容量*填充因子)超过临界值时,会进行扩容
int threshold;
 
get和put的时候确定元素在数组中的位置
posted @ 2018-12-10 18:30  英特费斯  阅读(120)  评论(0编辑  收藏  举报