1.hashMap的底层结构 : 数组+ 链表(红黑树) 且红黑树是jdk1.8以后的
当链表的长度 达到 8以上且数组的长度(哈希表的容量)超过64时 就转表成红黑树存储
当红黑树的节点个数小于6时 调整为链表
2.hashMap的两个重要参数: 初始容量大小 和 扩容因子(加载因子)
无参构造: 具有默认初始化容量(16) 扩容因子是0.75
有参构造: 指定初始化容量 扩容因子也是0.75
扩容:用数组容量大小乘以加载因子得到一个值,一旦数组中存储的元素个数超过该值就会调用 rehash方法将数组容量增加到原来的两倍 (可以提高效率)
3.hashMap 在多线程操作中出现的问题
出现线程安全问题 ---->可以使用synchronize 或者加锁解决 但是 速度慢
还可以使用 juc包下的ConcurrentHashMap替代HashMap 速度快且线程安全