一:获取键值的方法
运行结果:
二:遍历键值有三种方法
①
②
③
运行结果:
!!一定注意到上面说明的map集合特点:键不能重复,值可以重复!!
三:HashMap(map集合的实现类)
注意图中涂色背景的文字:Table[i]中的节点数量小于8是使用链表的形式,如果节点数量大于8,则会变成红黑树的形式来保存Table[i]的节点信息
链表结构示意图
红黑树结构示意图
Table[i]中的节点数量大于8时,通过红黑树提升查找速度
四:HashTable——线程安全,但是不太常用,因为性能慢
五:ConcurrentHashMap——线程安全,比HashMap性能高
① 为什么比HashMap性能高呢?
因为ConcurrentHashMap里使用了Segment分段锁+HashEntry(相当于把一个HashMap分成多个段,每段分配一把锁,这样子支持多线程访问),而HashMap用的是Syncronized锁全部,所有线程竞争一把锁。
Segment分段锁继承ReentrantLock,在并发数高的时候,ReentrantLock比Syncronized总体开销要小一些。
六:TreeMap——key值按一定的顺序排序,需要用到compareTo比较器
七:linkedHashMap——继承HashMap
特点:是有序的,和插入的顺序保持一致
运行结果:
--------------------------------------------------------------------------------------------------------------------------------
Map用的多的两个:①HashMap(用的最多)
②如果说是个成员变量,需要保证线程安全性的话就使用ConcurrentHashMap
需要手动的去排序就使用TreeMap



