`
budairenqin
  • 浏览: 199032 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java8 中HashMap的优化

阅读更多
先看代码,来自HashMap.putVal()
            Node<K,V> e; K k;
            if (p.hash == hash &&
                ((k = p.key) == key || (key != null && key.equals(k))))
                e = p;
            else if (p instanceof TreeNode)
                e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);
            else {
                for (int binCount = 0; ; ++binCount) {
                    if ((e = p.next) == null) {
                        p.next = newNode(hash, key, value, null);
                        if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st
                            treeifyBin(tab, hash);
                        break;
                    }
                    if (e.hash == hash &&
                        ((k = e.key) == key || (key != null && key.equals(k))))
                        break;
                    p = e;
                }
            }

不知道我是不是孤陋寡闻了,刚发现java8中hashmap跟以前比有这样的优化:
if (binCount >= TREEIFY_THRESHOLD - 1)
当符合这个条件的时候,把链表变成treemap,这样查找效率从o(n)变成了o(log n)
大家感受下
分享到:
评论
2 楼 戴改改 2015-04-17  
他的list都是采用一个TreeNode来实现的,红黑树
1 楼 iecel1990 2014-04-28  
是优化了,

相关推荐

    java8新特性(Stream,lambda等)

    java8新特性(Stream,lambda等)java8新特性(Stream,lambda等)java8新特性(Stream,lambda等)java8新特性(Stream,lambda等)

    剖析Java中HashMap数据结构的源码及其性能优化

    主要介绍了Java中HashMap数据结构的源码及其性能优化,文中以Java 8后HashMap的性能提升来讨论了HashMap的一些优化点,需要的朋友可以参考下

    阿里巴巴Java性能调优实战(2021-2022华山版)+Java架构核心宝典+性能优化手册100技巧.rar

    HashMap 7 种遍历方式的性能评测与优化 If / switch 性能评测 switch 性能优化 JVM 性能优化 MySQL性能优化的 50+ 小技巧 Redis 性能优化的 13 个小技巧 . . . 每篇文章图文并茂,附有源码 + 性能评测结果 + ...

    Java性能优化手册100技巧 中文PDF最新版

    性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库性能优化、前端性能优化等。 内容包括但不限于: String 性能优化的 3 个小技巧 HashMap 7 种遍历方式...

    Java魔法解密:揭秘HashMap底层机制.pptx.pptx

    HashMap在性能优化方面采取多种策略,如扩容机制、负载因子调整等,以保持较低的冲突率和较高的查找效率,提升整体性能。 HashMap的线程安全机制。 HashMap通过synchronized关键字实现线程安全,确保多线程环境下的...

    java7hashmap源码-Excellent-Blog-share:欢迎分享优秀博客

    java8 jvm java并发 java集合相关 Others DesignPatterns系列 Dubbo系列 Zookeeper系列 Redis系列 - [伯乐在线——Redis]() MQ系列 Database系列 - [MySQL索引和SQL调优]() - [揪出MySQL延迟上千秒的元凶]() - [掌握...

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲慎重使用正则表达式05讲ArrayList还是LinkedList使用不当性能差千倍07讲深入浅出HashMap的设计与优化08讲网络通信优化之IO模型:如何解决高并发下IO瓶颈09...

    HashMap原理分析及性能优化

    HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。 HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题04.java中int占几个字节.mp4 │ Java面试题05.java面向对象的特征.mp4 │ Java面试题06.装箱和拆箱.mp4 │ Java面试题07.==和equals的区别.mp4 │ Java面试题08.String.mp4 │ Java面试题09.讲一下java...

    hashmap 集合

    java 集合 优化 菜单,本人所总结,都是项目中所用道德,

    java技能总结.docx

    掌握Java标准库:掌握Java标准库中的重要类和接口,如String、ArrayList、HashMap、Thread、Socket等。 掌握Java的高级特性:掌握Java的反射、泛型、注解、并发编程等高级特性,以及Java集合框架和并发包的使用。 ...

    Java持久化数据结构详解.pdf

    但如果循环是为了找到特定元素,那目前还没有什么优化的办法,使得遍历数组和采用HashMap 的版本一样快。以数据库的性能为例,但运行环境的任何部分都可能会引起性能问题。 对于整体系统,采取结构化方法针对系统的...

    Java理论与实践:构建一个更好的HashMap

    并针对吞吐量进行优化,对于大多数一般用法来说它是经过优化的,这些用法往往会检索一个很可能在map中已经存在的值。ConcurrentHashMap摒弃了单一的map范围的锁,取而代之的是由32个锁组成的集合,其中每个锁负责...

    Java面试题-并发.docx

    这份文档详细讨论了Java中HashMap的各个方面,包括其内部机制、线程安全性、性能优化以及与其他类的比较等。通过对HashMap的不同问题进行深入分析,读者可以全面了解该数据结构的工作原理和使用注意事项。 首先,...

    Java面试题-哈希.docx

    这份文件详细探讨了Java中HashMap的各个方面,包括其内部机制、线程安全性、性能优化以及与其他类的比较等。通过对HashMap的不同问题进行深入分析,读者可以全面了解该数据结构的工作原理和使用注意事项。 首先,...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题11.HashMap和HashTable的区别 Java面试题12.实现一个拷贝文件的工具类要使用字节流还是字符串 Java面试题13.线程的的实现方式?怎么启动线程?怎么区分线程? Java面试题14.线程并发库和线程池的作用 Java...

    JAVA高并发高性能高可用高扩展架构视频教程

    JAVA企业级基础课题(HashMap那些事) 企业架构师必备技能(JAVA核心技术反射) JavaWeb之基础(手写实现Tomcat服务器) java多线程编程 纯手写实现SpringIOC实现过程 JEE企业级开发(企业级项目开发权威指南) 网络爬虫之...

    Java实现和维护系统详解.pdf

    但如果循环是为了找到特定元素,那目前还没有什么优化的办法,使得遍历数组和采用HashMap 的版本一样快。以数据库的性能为例,但运行环境的任何部分都可能会引起性能问题。 对于整体系统,采取结构化方法针对系统的...

    Java为改善可读性和灵活性重构代码.pdf

    但如果循环是为了找到特定元素,那目前还没有什么优化的办法,使得遍历数组和采用HashMap 的版本一样快。以数据库的性能为例,但运行环境的任何部分都可能会引起性能问题。 对于整体系统,采取结构化方法针对系统的...

    Java集合类操作优化经验总结

    本文首先针对 Java 集合接口进行了一些介绍,并对这些接口的实现类进行详细描述,包括 LinkedList、ArrayList、Vector、Stack、Hashtable、HashMap、WeakHashMap 等,然后对一些实现类的实现方式和使用经验进行讲解...

Global site tag (gtag.js) - Google Analytics