HashMap的继承关系
在Java1.8版本中,HashMap继承了AbstractMap抽象类并实现了Map接口。
HashMap的存储原理
HashMap底层是Hash表,由数组、单向链表和红黑树构成,该数组为Node类型、数组中每一个元素对应一条单向链表,当一条单向链表的长度>=8时该链表转变为红黑树结构。ArrayList底层为数组的list集合,查找速度快而删除与修改效率低;LinkedList底层为双向链表的list集合,查找效率低,删除与修改效率高;而HashMap底层为Hash表,集合了数组与链表的优点,使得无论查找还是修改删除操作,都有不错的效率。
HashMap中定义了一个内部类Node<K,V>节点继承了Map.Entry<K,V>,该节点中有四个存储空间,分别是hash、key、value、next。