美文网首页
java HashMap的一点总结

java HashMap的一点总结

作者: 子暄_5f17 | 来源:发表于2017-07-23 13:51 被阅读0次

最近在看java集合的源码,看到了HashMap,网上HashMap讲的最好的是美团技术团队的一篇文章,链接https://tech.meituan.com/java-hashmap.html。其中讲到HashMap的扩容机制,有这么一段话:因此,我们在扩充HashMap的时候,不需要像JDK1.7的实现那样重新计算hash,只需要看看原来的hash值新增的那个bit是1还是0就好了,是0的话索引没变,是1的话索引变成“原索引+oldCap”。对照源码如下:if ((e.hash & oldCap) == 0) 。源码中使用原来的hash值和原来的容量进行匹配,对着源码和上面这一段话,看半天没看明白。后来又重头看了一次,这次终于发现了真正的技术所在。HashMap在进行put的时候,是用hash & cap-1。假设cap是16,hashmap的cap总是2的次幂。那么hash & 00001111就是这个值得位置所在。当从16扩容到32之后,使用hash & oldcap也是就是hash 00010000来决定当前这个值是放在原索引还是放在原索引+oldcap。上面那句话说的新增的bit,其实就是从右往左数的第五个bit位。到这里终于看明白了。

相关文章

  • HashMap扩展/ConcurrentHashMap/Link

    HASHMAP扩展 之前读Effective Java的时候稍微总结过HashMap: http://www.ji...

  • hashmap 原理

    总结一下java 的 HashMap 1.什么是HashMap及HashMap的特点? 键值对存储数据,最多允许一...

  • HashMap

    Java HashMap 标签(空格分隔): Java source-code hash-map 总结 HashT...

  • java HashMap的一点总结

    最近在看java集合的源码,看到了HashMap,网上HashMap讲的最好的是美团技术团队的一篇文章,链接htt...

  • 近期Java高级工程师面试总结

    近期Java高级工程师面试总结 面试总结 Java基础 Hashtable和HashMap的区别。 抽象类与接口的...

  • HashMap底层实现和原理(源码解析)

    转自: Java集合:HashMap底层实现和原理(源码解析),在最后加上了自己的一点总结。文章的内容基于JDK1...

  • Java常见知识总结(转)

    Java总结 一、Java基础 1、String类为什么是final的。 2、HashMap的源码,实现原理,底层...

  • Java的HashMap总结

    数据结构 JDK7中的HashMap采用数组+链表的结构来存储数据 JDK8中的HashMap采用数组+链表或树的...

  • Java容器系列之HashMap的存储

    概要 本文将结合Java源码总结HashMap的存储结构及其扩容策略,并根据这些特点给出使用HashMap的最佳实...

  • 2018-03-12

    HashMap in Java HashMap in Redis HashMap in Golang

网友评论

      本文标题:java HashMap的一点总结

      本文链接:https://www.haomeiwen.com/subject/hkcmkxtx.html