1.根据key通过哈希算法计算出数组下标
2.通过数组下标,查看是否为空,如果为空,就将对应的key和value封装成对象存入该位置
3.如果不为空,则分情况讨论
jdk1.7,底层是链表,先看是否需要扩容,是,就扩容,不是,就采用头插法存入
jdk1.8,如果是链表,先判断key值是否存在,再将其使用尾插法存入
如果是红黑树,先判断key值是否存在,将其封装成节点出入红黑树
synchronized 修饰普通方法与静态方法的区别
synchronized 修饰普通方法时,锁的是当前对象的方法,等价于 synchronized (this)
synchronized 修饰静态方法时,锁的是所有对象的方法,等价于 synchronized (Xxx.class)