hashMap的基础知识:
1、HashMap是一个用于存储key-value键值对的集合,每一个键值对也叫做Entry。这些键值对分散存储在一个数组当中,这个数组就是HashMap的主干。
2、put方法的原理:当put一个元素的时候,通过对key进行hash来确定entry插入的位置。当entry越来越多时,可能通过hash算出来的下标是一样的,这个时候是通过链表来保存的。
3、get方法的原理:首先会把输入的key做一次hash,得到对应的index。如果有出现hash冲突的情况时,就通过链表,一个一个向下查找。
4、hashMap默认的初始长度为16,为什么要设置为16呢?这和上面说到的hash算法有关。(具体什么算法的原理这里就暂时不讨论了)
5、hashMap扩容的条件是:hashMap的当前长度大于或等于容量*0.75

HashMap的高并发:
1、hashMap在插入元素过多的时候需要重新resize,而resize包含扩容和rehash,rehash在并发的情况下会形成链表环。

并发下使用的map是什么:
由于hashMap在高并发的情况下,有可能会出现链表环的情况,所以常用来代替hashMap的线程安全的类为ConcurrentHashMap
1、ConcurrentHashMap中相当于包含了多个HashMap(说标准点应该就是segments)
2、而当操作ConcurrentHashMap的时候,只有对同一个segment操作才会加锁