基本介绍
其实HashMap底层是个什么东西我们之前也讲过, 就是一个哈希桶(差不多可以看成一个数组), 然后每一个节点又连接着链表/红黑树之类的, 下面让我们看一看具体在源码上是怎样实现的:
常量及其它
-> static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
//这个指代的是哈希桶的大小, 默认为16
-> static final float DEFAULT_LOAD_FACTOR = 0.75f;
//默认的负载因子 -> 0.75
-> static final int TREEIFY_THRESHOLD = 8;
//树化的条件之一, 就是指当一个节点上的链表长度大于8时(也不一定是8, 但跟8是有关的, 后面讲put的时候再说),就会从链表转换为红黑树
-> static final int MIN_TREEIFY_CAPACITY = 64;
//树化的条件之一, 就是指当哈希桶的大小如果大于64(数组的长度), 就会将链表转换成红黑树
-> static final int UNTREEIFY_THRESHOLD = 6;
//解树化的条件, 当红黑树的大小小于8时, 就会从红黑树转换回链表.
-> static class Node<K, V> implements Map.Entry<K, V> {...