Hashmap是由一个Entry数组及链表实现的,当使用put(key, value)将键值对存储到Map中时,首先会调用hashCode()方法获取hashCode,并对数组长度取余找到在数组上的存储位置,然后判断该位置上上是否有元素,没有的话创建Entry对象存入该位置,有的话先判断该位置的链表有没有该key,有的话将该key所在的value改变为新的value,没有的话创建Entry对象并存储到该位置,并令该Entry的next等于之前的Entry对象;当我们使用get(key)获取对象时,首先调用hashCode()返回hashCode,从而找到bucket位置,然后调用keys.equals()方法找到链表中的正确位置,最后返回该对象。
即为当存储键值对时,先寻找数组上的存储位置并判断是否有元素,若无就创建一个新的Entry对象,有的话就判断链表中是否有该key,若有的话就覆盖原value值,没有的话就创建一个对象并存储,并使next游标指向之前的Entry对象
get方法即为,调用方法获取hashCode,并调用keys。equals方法找到链表中的正确位置并返回value值