hashmap map=new hashmap().
在实例化以后,底层创建了一个entry类型的长度为16的数组,
map.put(key value)
执行这步操作时,首先计算key所在类的hashcode方法,计算key的哈希值,经过某种算法时,他会将key放在entry数组的某一个位置,如果这个位置上是空的,就添加成功,如果这个地方不是空的,就要比较这个位置上所有值的哈希值(这里采用的是链表结构,可以放多个元素),如果哈希值不相同,则添加成功,如果相同,就会调用equals方法,来比较上面元素和添加元素的内容是否相同,如果不相同,添加成功,如果相同,就会用其中的valuel替换其中的valuel值。
所以
这就是为什么map中添加元素,一定要重写equals方法和hashcode方法的原因
这就是为什么