`
budairenqin
  • 浏览: 201520 次
  • 性别: 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  
是优化了,

相关推荐

    Java8HashMap键与Comparable接口编程开

    在Java 8中,HashMap有一些重要的优化和改进,尤其是对于键(Key)的处理方式。这里我们将深入探讨Java 8 HashMap如何与Comparable接口结合使用,以及这背后的编程技术和设计原理。 首先,我们了解下Comparable接口...

    自定义map实现java的hashmap

    在Java编程中,HashMap是一个非常重要的数据结构,它实现了Map接口,提供了键值对的存储功能,具有快速存取和高效查找的特点。HashMap基于哈希表(也称为散列表)原理,通过键对象的哈希码来定位元素,进而实现O(1)...

    js 版 java hashmap

    JavaScript中的HashMap并不是内置的数据结构,但在许多开发场景中,我们需要实现类似Java中HashMap的功能,用于存储键值对数据。在JavaScript中,我们通常使用对象(Object)来模拟HashMap的行为,因为对象的属性名...

    在Java8与Java7中HashMap源码实现的对比

    本篇文章将深入对比Java 7和Java 8中HashMap的源码实现,探讨它们在解决哈希冲突和优化性能上的差异。 一、HashMap的基本原理 HashMap基于哈希表实现,它使用键的哈希值来决定键值对在数组中的位置。哈希表通过计算...

    java中HashMap详解

    JDK 8对HashMap进行了优化,引入红黑树以减少长链表的查找时间,提高了性能。 总的来说,HashMap是Java中高效的键值对存储结构,但需要注意其线程安全性和哈希冲突可能导致的性能影响。在实际使用中,应根据需求...

    Java中HashMap详解(通俗易懂).doc

    Java中的HashMap是一个非常重要的数据结构,它实现了Map接口,提供了键值对的高效存储和访问。HashMap基于哈希表(也称为散列表)原理工作,它允许用户通过键(Key)快速查找对应的值(Value)。在HashMap中,键和值...

    java7-8中的 HashMap和ConcurrentHashMap全解析.pdf

    在Java 7和8中,HashMap和ConcurrentHashMap是两种重要的数据结构,分别用于非线程安全和线程安全的键值对存储。本篇文章将深入解析这两种数据结构的内部实现,帮助读者理解它们的工作原理。 HashMap是Java中最常用...

    Java-HashMap.rar_hashmap_java hashmap

    在Java编程语言中,`HashMap`是`java.util`包中的一个核心类,它属于集合框架的一部分,主要用于存储键值对的数据结构。`HashMap`基于哈希表(散列表)实现,提供了快速的插入、删除和查找操作,平均时间复杂度为O(1...

    java7-8中的 HashMap和ConcurrentHashMap全解析

    在Java 8中,`ConcurrentHashMap`进一步优化,取消了段的概念,改为使用细粒度的锁,每个节点可能携带锁,这使得并发控制更加灵活且高效。 `ConcurrentHashMap`提供了多种线程安全的操作,如`putIfAbsent()`, `...

    java课件-HashMap

    HashMap是Java编程语言中一种非常重要的数据结构,它...总的来说,HashMap是Java编程中不可或缺的数据结构,广泛应用于各种场景,如缓存、配置管理等。理解其工作原理和使用注意事项,对于编写高效的Java代码至关重要。

    2022年Java中对HashMap的深度分析Java教程.docx

    在Java编程语言中,HashMap是Java集合框架的重要组成部分,它提供了高效的存储和检索对象的能力,实现了"键-值"对的映射。本教程将深入分析2022年Java中HashMap的内部机制、关键属性和操作。 HashMap的核心属性包括...

    java集合类HashMap总结共7页.pdf.zip

    这篇7页的PDF文档“java集合类HashMap总结”可能是对HashMap类的深入解析,包括其原理、常用方法以及在实际开发中的应用。 HashMap的核心特性在于它的哈希函数,这个函数将键(key)转换为一个哈希码(hash code)...

    java中HashMap详解.pdf

    在Java编程语言中,HashMap是基于哈希表实现的数据结构,它是Map接口的一个具体实现,提供了高效的插入、删除和查找操作。HashMap不保证元素的顺序,允许null键和null值。HashMap的工作原理主要依赖于哈希算法,通过...

    深入Java集合学习系列:HashMap的实现原理

    在Java编程语言中,集合框架是开发者日常工作中不可或缺的一部分,HashMap作为其中的重要成员,它的实现原理对于理解Java性能优化和数据结构有深远的意义。HashMap是一个基于哈希表的数据结构,它实现了Map接口,...

    2.Java7_8+中的+HashMap+和+ConcurrentHashMap+全解析1

    本文将对这两个类在Java 7和8中的实现进行深入解析,尤其是它们在并发环境下的行为和优化。 首先,我们来看Java 7的HashMap。HashMap是一个非线程安全的数据结构,适用于单线程环境。它的内部结构主要由一个数组和...

    java8 官方文档.

    8. **新的 Nashorn JavaScript 引擎**:Java 8引入了Nashorn JavaScript引擎,使得在Java应用中执行JavaScript代码成为可能,提高了Java与JavaScript之间的互操作性。 9. **并行数组操作**:Java 8对数组操作进行了...

    从 Java 代码到 Java 堆 理解和优化您的应用程序的内存使用

    【标题】:深入理解Java内存使用与优化:从代码到Java堆 【描述】:本文旨在帮助Java开发者深入了解从编写代码到Java堆的内存管理过程,以便更好地优化应用程序的内存使用。通过分析Java代码中的内存开销,以及讨论...

    Java 实例 - HashMap遍历源代码-详细教程.zip

    在Java编程语言中,HashMap是集合框架中一个重要的类,用于存储键值对的数据结构。这个实例教程将深入解析HashMap的遍历方法及其源代码,帮助开发者更好地理解和使用HashMap。以下是对这个主题的详细讲解: 1. **...

    深入理解Java之HashMap —— 03

    在深入探讨Java中的HashMap之前,我们先来了解一下HashMap的基本概念。HashMap是Java集合框架中的一种数据结构,它实现了Map接口,允许将键...理解这些内部机制有助于在实际编程中更好地利用HashMap,并优化代码性能。

Global site tag (gtag.js) - Google Analytics