1、Map 接口的常用实现类:HashMap、Hashtable和Properties
2、HashMap 是 Map 接口使用频率最高的实现类
3、HashMap 是以 key-val 对的方式来存储数据(HashMap$Node类型)
4、key 不能重复,但是值可以重复,允许使用 null 键和 null 值
5、如果添加相同的 key,则会覆盖原来的 key-val,等同于修改(key不会替换,val会替换)
6、与 HashSet 一样,不能保证映射的顺序,因为底层是以 hash 表的方式来存储的(JDK 8的 hashMap 底层 数组+链表+红黑树)
7、HashMap 没有实现同步,因此是线程不安全的,方法没有做同步互斥操作,没有synchronized
示意图
扩容机制(和HashSet一样)
1、HashMap 底层维护了 Node 类型的数组 table,默认为 null
2、当创建对象时,将加载因子(loadfactor)初始化为0.75
3、当添加 key-val 时,通过 key 的哈希值得到在 table 的索引,然后判断该索引处是否有元素,
如果没有元素,直接添加,如果该索