hashmap 的put与get(笔记)

put操作

hashmap 的put与get(笔记)

本节主要记录自己对hashmap的认识,

成员变量:

 transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;//数组

 

1 数据接口就是数组 加链表  hashmap有 table数组专门记录 的就是,正常的put值就是计算出key的hashcode然后找出索引 i 去table数组中找,如果存在就用单链表存储,如果不存在的话就直接addEntry把数据存储,然后如果找不到

 

get操作:
hashmap 的put与get(笔记)

 

进行get操作的时候首先也是计算出k的hashcode 然后计算出索引i 去table[i]中遍历单链表,此操作比较慢,如果数据量过大的时候,最后预先给map一个长度,避免进行自动扩容引起的时间消耗,重新计算hash复制数据是非常耗时间的, 然后根据key的hash值 以及key值本身作为条件进行查询, table数组中每一个单链表的hash应该是相等的,只是key不一样