hashMap

系统 1341 0

  • HashMap通过键的hashCode来快速的存取元素。
  • 当不同的对象hashCode发生碰撞时,HashMap通过单链表来解决,将新元素加入链表表头,通过next指向原有的元素。 单链表在Java中的实现就是对象的引用(复合)。
public V put(K key, V value) {
     // 处理key为null,HashMap允许key和value为null
     if (key == null)
          return putForNullKey(value);
     // 得到key的哈希码
     int hash = hash(key);
     // 通过哈希码计算出bucketIndex
     int i = indexFor(hash, table.length);
     // 取出bucketIndex位置上的元素,并循环单链表,判断key是否已存在
     for (Entry<K,V> e = table[i]; e != null; e = e.next) {
          Object k;
          // 哈希码相同并且对象相同时
          if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
               // 新值替换旧值,并返回旧值
               V oldValue = e.value;
               e.value = value;
               e.recordAccess(this);
               return oldValue;
          }
     }

     // key不存在时,加入新元素
     modCount++;
     addEntry(hash, key, value, i);
     return null;
}

hashMap


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论