文章目录

  • HashMap的put方法存值过程图
  • 1. HashMap存值过程(put方法)
  • 2. HashMap取值过程(get方法)

HashMap的put方法存值过程图

java hashMap会自动截取长字符串问题_键值对


图片来源自网络

1. HashMap存值过程(put方法)
  • 第一步:当往调用put方法向HashMap里增加一个键值对时,会先调用键的hashcode方法,来得到一个hashcode值,然后根据这个值来计算出这个键值对在map中数组对应的下标,及定位到HashMap中的具体的某一个桶。
  • 第二步:判断这个桶是否为空,如果是,直接把对象存到数组里,存储结束;如果不是,转到第三步
  • 第三步:判断已存在对象的key的equals方法,跟需要添加的对象的key对比,是否为true,如果是,覆盖这个key所对应的value,存储结束;如果不为true,转到第四步
  • 第四步:判断这个对象它指向下一个对象的next指针的是不是为空,如果不为空,重复第四步的过程;如果为空,则把该对象的next指针指向要增加的对象,存储结束。
2. HashMap取值过程(get方法)
  • 第一步:调用key的hashcode方法,得到一个返回值,通过返回值定位到map中数组对应的下标,就是定位到HashMap中的具体的某一个桶。
  • 第二步:判断这个桶是否为空,如果是,就结束判断,返回null;如果不是空,就转到第三步。
  • 第三步:判断桶中对象的key值与传入的key值是否相等并且用equals方法判断他们是否为同一个对象,如果判断结果为真,就返回这个对象的value值;如果为假,就转到第四步。
  • 第四步:判断这个对象它指向下一个对象的next指针的是不是为空,如果是空,就结束判断,返回null;如果next指针不是空,就取出它所指对象,重复上面第三步的判断操作,直到取出对应的value值,或者直到桶中的对象被遍历完,返回一个null值。