hashmap原理
1.hashmap结构(jdk1.8) 结构:hashmap采用数组+链表+红黑树的结构, 数组用查询快的特点,但是插入数据慢,链表有插入快的特点,但是查询慢,所以hashmap结合两者,而红黑树是为了链表过长影响查询速度,将链表转化为红黑树. 源码: //hashmap默认初始化容量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4 ; // aka 16 //最大容量 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 ; //当table个数大于等于时才能转化为红黑树 static final int MIN_TREEIFY_CAPACITY = 64 ; //包含key-value个数 transient int size ; //hashmap被修改次数 transient int modCount ; //要调整大小的下一个大小值(容量