Java集合之HashMap
一、简介
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //hash表的初始容量
static final int MAXIMUM_CAPACITY = 1 << 30; //hash表的最大容量,2的30次方
static final float DEFAULT_LOAD_FACTOR = 0.75f; //默认负载系数
static final int TREEIFY_THRESHOLD = 8; //同hash的链表最大长度,超过这个值链表变为树
static final int UNTREEIFY_THRESHOLD = 6; //红黑树节点小于这个值会转成链表
static final int MIN_TREEIFY_CAPACITY = 64;transient Node<K,V>[] table; //hash表
transient Set<Map.Entry<K,V>> entrySet; //KV数据
transient int size; //元素个数
transient int modCount; //修改次数
int threshold; //负载容量
final float loadFactor; //负载系数static class Node<K,V> implements Map.Entry<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
......
......
}二、初始化
三、增加
四、删除
五、查找
六、修改
七、快速失败机制
八、安全失败机制
九、线程不安全导致的问题
重点问题
1 如何扩容
Last updated