数据结构
- 在 JDK1.8 中,HashMap 是由
数组+链表+红黑树
构成 - 当一个值中要存储到HashMap中的时候会根据Key的值来计算出他的hash,通过hash值来确认存放到数组中的位置,如果发生hash冲突就以链表的形式存储,当链表过长的话,HashMap会把这个链表转换成红黑树来存储
在看源码之前我们需要先看看一些基本属性
//默认初始容量为16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //默认负载因子为0.75 static final float DEFAULT_LOAD_FACTOR = 0.75f; //Hash数组(在resize()中初始化) transient Node<K,V>[] table; //元素个数 transient int size; //容量阈值(元素个数超过该值会自动扩容) int threshold;
table数组里面存放的是Node对象,Node是HashMap的一个内部类,用来表示
来源:https://www.cnblogs.com/miaowwwww/p/12597353.html