首先我们根据图示来分析一下HashMap中add方法的源代码
从上面的分析过程我们能看出将一个(key,value)加入map中其实仅仅与key有关,而且在加入过程中首先使用到了hashcode然后使用了equals,所以说如果equals表示了两个对象的相等关系却没有保证其hashcode也相等就会出现在hashmap中加入了两个相等的key的情况,这也就是为什么在重写equals的同时一定要重写hashcode的根本原因。
如果研究get方法的源码也同样会发现与普通相似的处理算法。
不论是直接还是间接使用了HashMap HashTable(注意HashSet底层就是使用了一个HashMap),都必须在重写equals的同时重写hashcode。