1.HashMap
2.HashTable
3.ConcurrentHashMap
1.HashMap
底层是链表+Entry数组,数组基于Entry<K,V>这个内部类,这个类下有k,v,next,hash四个基本属性,存放key、value、next指向下一个实例、hashcode,以Entry存放数据。
2.HashTable
跟HashMap的不同只是key不能为null,和put/set方法加了synchronized。但由于同步了put/set方法,则读写缓慢。
3.ConcurrentHashMap
以Segment数组为核心。一个ConcurrentHashMap拥有一个Segment数组,每个Segment数组的元素是多个HashEntry数组,里面存放的和HashMap一样。因为它是采取分段加锁的,读哪段Segment数组元素,就给哪段加锁,其他元素不加锁,所以可以同时读取不同元素的Entry数组。