hashmap原理为什么红黑树(java 8 为什么要采用红黑树来管理hashmap)

2026-01-18 10:30:02 0

hashmap原理为什么红黑树(java 8 为什么要采用红黑树来管理hashmap)

“hashmap原理为什么红黑树”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看hashmap原理为什么红黑树(java 8 为什么要采用红黑树来管理hashmap)!

本文目录

java 8 为什么要采用红黑树来管理hashmap

java8不是用红黑树来管理hashmap,而是在hash值相同的情况下(且重复数量大于8),用红黑树来管理数据。 红黑树相当于排序数据。可以自动的使用二分法进行定位。性能较高。
一般情况下,hash值做的比较好的话基本上用不到红黑树。

jdk1.8的hashmap真的是大于8就转换成红黑树,小于6就变成链表吗

本文夹杂部分笔者个人观点,如描述有误,欢迎指正

写这篇文章,是因为最近研究hashmap源码的时候,会结合网上的一些博客来促进理解。而关于红黑树和链表相互转换这一块,大部分的文章都会这样描述:hashmap中定义了两个常量:

当链表元素个数大于8的时候,就会转换为红黑树;当红黑树元素个数小于6的时候,就会转换回链表。
笔者通过仔细观察,发现这种说法并不严谨。hashMap中确实定义了这两个常量,但并非简单通过元素个数的判断来进行转换。

链表转换为红黑树的最终目的,是为了解决在map中元素过多,hash冲突较大,而导致的读写效率降低的问题。在源码的putVal方法中,有关红黑树结构化的分支为:

即网上所说的,链表的长度大于8的时候,就转换为红黑树,我们来看看treeifyBin方法:

可以看到在treeifyBin中并不是简单地将链表转换为红黑树,而是先判断table的长度是否大于64,如果小于64,就通过扩容的方式来解决,避免红黑树结构化。原因呢?笔者个人觉得链表长度大于8有两种情况:

第二种情况是可以用扩容的方式来避免的,扩容后链表长度变短,读写效率自然提高。另外,扩容相对于转换为红黑树的好处在于可以保证数据结构更简单。
由此可见并不是链表长度超过8就一定会转换成红黑树,而是先尝试扩容

基本思想是当红黑树中的元素减少并小于一定数量时,会切换回链表。而元素减少有两种情况:

hashMap的remove方法,会进入到removeNode方法,找到要删除的节点,并判断node类型是否为treeNode,然后进入删除红黑树节点逻辑的removeTreeNode方法中,该方法有关解除红黑树结构的分支如下:

可以看到,此处并没有利用到网上所说的,当节点数小于UNTREEIFY_THRESHOLD时才转换,而是通过红黑树根节点及其子节点是否为空来判断。而满足该条件的最大红黑树结构如下:

节点数为10,大于 UNTREEIFY_THRESHOLD(6),但是根据该方法的逻辑判断,是需要转换为链表的

resize的时候,判断节点类型,如果是链表,则将链表拆分,如果是TreeNode,则执行TreeNode的split方法分割红黑树,而split方法中将红黑树转换为链表的分支如下:

这里才用到了 UNTREEIFY_THRESHOLD 的判断,当红黑树节点元素小于等于6时,才调用untreeify方法转换回链表

关于hashmap原理为什么红黑树和java 8 为什么要采用红黑树来管理hashmap的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

hashmap原理为什么红黑树(java 8 为什么要采用红黑树来管理hashmap)

本文编辑:admin

更多文章:


物流调研ppt免费模板下载大全(ppt模板免费下载的网站有哪些)

物流调研ppt免费模板下载大全(ppt模板免费下载的网站有哪些)

本篇文章给大家谈谈物流调研ppt免费模板下载大全,以及ppt模板免费下载的网站有哪些对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录ppt模

2025年9月9日 05:15

switch default用法(C语言中的switch和default是什么意思)

switch default用法(C语言中的switch和default是什么意思)

大家好,今天小编来为大家解答以下的问题,关于switch default用法,C语言中的switch和default是什么意思这个很多人还不知道,现在让我们一起来看看吧!本文目录C语言中的switch和default是什么意思c++中swi

2025年7月21日 18:15

增删改查为什么叫crud(curd是什么梗)

增删改查为什么叫crud(curd是什么梗)

各位老铁们好,相信很多人对增删改查为什么叫crud都不是特别的了解,因此呢,今天就来为大家分享下关于增删改查为什么叫crud以及curd是什么梗的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录curd是什么梗cr

2026年9月1日 02:30

js效果在浏览器上显示不出来(为什么360浏览器打开javascript插件时,看不到JS的效果,而IE和火狐浏览器可以)

js效果在浏览器上显示不出来(为什么360浏览器打开javascript插件时,看不到JS的效果,而IE和火狐浏览器可以)

大家好,如果您还对js效果在浏览器上显示不出来不太了解,没有关系,今天就由本站为大家分享js效果在浏览器上显示不出来的知识,包括为什么360浏览器打开javascript插件时,看不到JS的效果,而IE和火狐浏览器可以的问题都会给大家分析到

2026年5月5日 17:45

js获取数组的最后一个元素(如何在JavaScript数组中选择最后一个元素)

js获取数组的最后一个元素(如何在JavaScript数组中选择最后一个元素)

大家好,如果您还对js获取数组的最后一个元素不太了解,没有关系,今天就由本站为大家分享js获取数组的最后一个元素的知识,包括如何在JavaScript数组中选择最后一个元素的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本

2026年5月19日 23:00

服务器地址是什么(”服务器地址” 是什么 “端口号”是什么分别填写)

服务器地址是什么(”服务器地址” 是什么 “端口号”是什么分别填写)

各位老铁们,大家好,今天由我来为大家分享服务器地址是什么,以及”服务器地址” 是什么 “端口号”是什么分别填写的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2025年7月25日 02:00

二维动画制作软件(二维动画制作软件CreatureAnimationPro的作用介绍)

二维动画制作软件(二维动画制作软件CreatureAnimationPro的作用介绍)

本篇文章给大家谈谈二维动画制作软件,以及二维动画制作软件CreatureAnimationPro的作用介绍对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本

2025年9月19日 14:30

file上传文件(ajax的Fileupload怎样实现多文件上传)

file上传文件(ajax的Fileupload怎样实现多文件上传)

大家好,如果您还对file上传文件不太了解,没有关系,今天就由本站为大家分享file上传文件的知识,包括ajax的Fileupload怎样实现多文件上传的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录ajax的Fi

2026年5月26日 05:45

menu怎么读英语(菜单用英语怎么说 英文的菜单如何说)

menu怎么读英语(菜单用英语怎么说 英文的菜单如何说)

大家好,今天小编来为大家解答以下的问题,关于menu怎么读英语,菜单用英语怎么说 英文的菜单如何说这个很多人还不知道,现在让我们一起来看看吧!本文目录菜单用英语怎么说 英文的菜单如何说menu是什么意思菜单的英文单词怎么读!!!!menu怎

2025年10月7日 12:00

为什么叫contact(Con是什么意思)

为什么叫contact(Con是什么意思)

大家好,如果您还对为什么叫contact不太了解,没有关系,今天就由本站为大家分享为什么叫contact的知识,包括Con是什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录Con是什么意思英语高复衔接4.l

2026年7月13日 09:15

linux进入文件命令(linux 下打开文件命令)

linux进入文件命令(linux 下打开文件命令)

大家好,如果您还对linux进入文件命令不太了解,没有关系,今天就由本站为大家分享linux进入文件命令的知识,包括linux 下打开文件命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录linux 下打开文件命

2026年7月17日 06:15

自动随机生成数字(如何在excel表格中随机生成数字)

自动随机生成数字(如何在excel表格中随机生成数字)

各位老铁们,大家好,今天由我来为大家分享自动随机生成数字,以及如何在excel表格中随机生成数字的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录如何

2026年6月4日 18:15

sql如何筛选出纯数字(sql判断是否为数字)

sql如何筛选出纯数字(sql判断是否为数字)

这篇文章给大家聊聊关于sql如何筛选出纯数字,以及sql判断是否为数字对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录sql判断是否为数字SQL实用技巧:如何判断一个值是否为数字的方法SQL语言 怎么查找只有字母的记录 只有数

2026年7月3日 01:30

XxlJob集成GooFlow工作流?java要学到什么什么程度才能参加工作

XxlJob集成GooFlow工作流?java要学到什么什么程度才能参加工作

本篇文章给大家谈谈前端工作流,以及XxlJob集成GooFlow工作流对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录XxlJob集成Goo

2026年2月13日 23:00

javalibrary进入方法(java.library.path在哪)

javalibrary进入方法(java.library.path在哪)

“javalibrary进入方法”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看javalibrary进入方法(java.library.path在哪)!本文目录java.library.path在哪请问Java虚拟机中的N

2026年8月9日 10:00

淘宝客程序源码三合一(想购买个淘客app 哪个淘客app好)

淘宝客程序源码三合一(想购买个淘客app 哪个淘客app好)

其实淘宝客程序源码三合一的问题并不复杂,但是又很多的朋友都不太了解想购买个淘客app 哪个淘客app好,因此呢,今天小编就来为大家分享淘宝客程序源码三合一的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录想购买个淘

2026年1月24日 13:45

text和textarea区别(在java里面textarea 是什么,详细作用)

text和textarea区别(在java里面textarea 是什么,详细作用)

大家好,关于text和textarea区别很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于在java里面textarea 是什么,详细作用的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本

2025年8月31日 19:00

powerful sense of fun(关于“电”的英语作文好句有哪些)

powerful sense of fun(关于“电”的英语作文好句有哪些)

各位老铁们,大家好,今天由我来为大家分享powerful sense of fun,以及关于“电”的英语作文好句有哪些的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我

2026年8月20日 12:00

documents好用吗(iphone哪个视频压缩app好用)

documents好用吗(iphone哪个视频压缩app好用)

其实documents好用吗的问题并不复杂,但是又很多的朋友都不太了解iphone哪个视频压缩app好用,因此呢,今天小编就来为大家分享documents好用吗的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录ip

2025年6月6日 06:15

property是啥牌子(警示牌用英语怎么说)

property是啥牌子(警示牌用英语怎么说)

大家好,如果您还对property是啥牌子不太了解,没有关系,今天就由本站为大家分享property是啥牌子的知识,包括警示牌用英语怎么说的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录警示牌用英语怎么说fpga常

2026年8月27日 15:15

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索