HashMap简述
在JDK中,HashMap是存储键值对用的比较多的一个类。
其基于哈希散列表计算位置来达到键不重复存储。
其内部数据结构是数组(散列桶)+链表+红黑树,
数组是基础存储,存储位置为计算出来的hash值和数组长度减一相与,而数组长度一直都为2的整数幂。
链表是遇到哈希碰撞时,即数组同一下标要存放第二个值的时候,会在原值后面链接上下一个键值对。
红黑树是在链表过长(默认大于8)时进行的结构重组,将链表转换为红黑树,加快搜索效率。
HashMap的声明
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
扩展Map接口代表这个类是存储键值对的数据结构。
HashMap的域
在以往的版本中,是用Entry<K,V>来表示一个键值对结点的,而后来引入了红黑树表示的节点(TreeNode),就产生了新的表示方法(Node)。
延伸阅读
学习是年轻人改变自己的最好方式