以前使用过很多次HashMap,但是对于其是如何实现的却不是很了解,最近看了看HashMap的源码加上自己的理解写了这篇文章方便以后回忆,写得不好的地方请提醒。
HashMap继承了AbstractMap类并且实现了Map、Cloneable、Serializable三个接口。
PS:并不是每一个集合类都会实现Cloneable、Serializable接口,克隆(Cloneable)和序列化(Serializable)应该由集合类的具体实现来决定是否实现这两个接口。而Collection 和Map 接口,一个是元素集合,一个是键值对集合。
HashMap使用.put(K,V)方法添加元素,put方法是用来向HashMap中添加新的元素,从put方法的具体实现可知,会先调用hashCode方法得到该元素的hashCode 值,然后查看table中是否存在该hashCode值,如果存在则调用equals方法重新确定是否存在该元素,如果存在,则更新value值,否则将 新的元素添加到HashMap中。从这里可以看出,hashCode方法的存在是为了减少equals方法的调用次数,从而提高程序效率。
转载请注明原文地址: https://ju.6miu.com/read-675615.html