美文网首页
HashMap知识

HashMap知识

作者: 任嘉平生愿 | 来源:发表于2019-11-20 10:41 被阅读0次

    HashMap的扩容机制---resize() - 割肉机 - 博客园

    Java源码分析:HashMap 1.8 相对于1.7 到底更新了什么? - 简书

    在hashmap数组扩容之后,最消耗性能的点就出现了:原数组中的数据必须重新计算其在新数组中的位置,并放进去,这就是resize。 

    Hashtable与ConcurrentHashMap

    全锁 分段锁  

    给定的默认容量为 16,负载因子为 0.75。Map 在使用过程中不断的往里面存放数据,当数量达到了16 * 0.75 = 12就需要将当前 16 的容量进行扩容,而扩容这个过程涉及到 rehash、复制数据等操作,所以非常消耗性能。

    因此通常建议能提前预估 HashMap 的大小最好,尽量的减少扩容带来的性能损耗。

    ConcurrentHashMap 1.7

    ConcurrentHashMap 1.8

    1.8 在 1.7 的数据结构上做了大的改动,采用红黑树之后可以保证查询效率(O(logn)),甚至取消了 ReentrantLock 改为了 synchronized,这样可以看出在新版的 JDK 中对 synchronized 优化是很到位的。

    相关文章

      网友评论

          本文标题:HashMap知识

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