HashMap心得

来源:互联网 发布:阿里云发短信 php代码 编辑:程序博客网 时间:2024/05/16 14:24

HashMap的心得

HashMap是通过Entry[]数组和链表来实现的。在进行put(K key,V value)操作时,会通过Key的hashCode计算得出这个Entry的索引值,如果Entry的索引值重复,那么就会使用到链表,把后存进的元素放在这个数组中,并把next属性指向在它之前存进来的具有相同hashCode值的那个元素。

为什么后进来的元素需要放在链表的最前面,而不是最后面,这就取决于效率问题,在集合中,我们除了做存(put)的操作之外,还需要做取(get())的操作;get(Object key)方法在实现的时候,因为HashMap底层综合运用了数组和链表,如果hashCode值重复,那么就需要去这个索引下的链表中去寻找值,这样就会出现两次查询,那么为了提高效率,把后进来的值放在链表的最前面,这样可以减少一次查询,提高效率。

除此之外,HashMap的数组其实也是一个链表,所以HashMap实际上是一个”链表散列”的数据结构,综合使用了数组和链表这两种数据结构。

附:网上找的HashMap图