在java集合中HashMap是我们应用较为普遍的一个集合类型,HashMap存取元素时,采用的是key--value的形式进行存取元素的。在JDK1.8的HashMap的底层实现为数组+链表+红黑树。HashMap的初始容量是16增长因子为0.75。
进行put操作的过程。
往HashMap中put元素时,先根据key的HashCode值计算hash值,根据Hash值得到数组元素的下标,如果数组的位置上没有其他元素直接将该元素放到该位置上,如果该位置上已有其他元素,则进行链表的形式存放,采用尾插法,新加入的放在链表的头部,最先加入的放在链表的尾部。
执行get过程。
从HashMap中取元素时,首先根据key的hashCode,根据hashCode值计算出hash值找到数组中对应的位置,然后根据key的equals方法找到链表中对应的位置。
总结:
HashMap采用key-value进行存取对象,entry对象就是key-value的一个整体,HashMap的底层采用Entry[]数组进行保存key-value,当需要一个对象时hashCode方法会计算出在数值的某个位置,equals方法会计算出在链表的某个位置。
网友评论