栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java源码系列:HashMap源码验证,自己写的HashMap性能高吗?为什么在JDK8中新增红黑树?详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java源码系列:HashMap源码验证,自己写的HashMap性能高吗?为什么在JDK8中新增红黑树?详解

自己手写一个HashMap,测试10亿数据

已经用源码给大家进行实现,好,那现在呢,我有一个问题,那我们既然已经把这个代码实现了,

那同学们我想问一下,我们写的这个HashMap代码跟java提供的那个HashMap,

你觉得哪一个HashMap的性能更好呢?

来我在这里呢,我给大家测试一下啊,看一下咱们这个代码到底OK不OK? 到底管不管用?

有很多同学说我这个性能一定很慢,其实也不会很慢,那这里呢,

我就把它定义为10亿的数据循环,太多臣妾受不了,这么多0对吧,臣妾就来这么多,

好,我们看一下咱们这10亿的数据能不能运行成功?

我们象征性的跑 1百万数据就行啦。在整个的过程中杠杠的数据,没有任何问题,对不对?

这个数据正常运行,是完全没有问题的!但确实啊,我承认我们的这个代码呢,

确实是没有java提供的那个HashMap,性能那么高,那原因你们知道是为什么吗?

自己写的HashMap跟java提供的HashMap,哪个性能高?

来,我们不用循环这么多,我只要在这个地方,我把这个map输出来给你看一下,

你就知道,我在这里给个1000,我在这里设置个断点,我给你看一下这个HashMap,

你就明白为什么,这是我们今天的一个高潮的部分,大家一定要注意这个

咱们 debug 运行,运行到断点位置,然后右键 Evaluate Expression

输入 map,我们可以看到 map 的存储值(当然我们在控制台也是可以看到的)

我们发现,table 里面只有16条数据,而我们存储输出的map,明明有1000条数据,

我们点进去看,会发现1000条数据,其实都存储了,它都存储在我们的 链表next域 上面,

那我们知道,我们链表有什么特点?查询慢,插入删除快

它需要从头节点开始依次去查询,如果我们这个链表长度比较长,会非常的耗时耗性能!

链表有关介绍详细可参考:

java源码系列:链表是什么?数组和它有何不同?(2022-07-28更新完毕)

如下,查看链表查询演示:

如上,是不平衡的二叉树,其实它也是一个线性链表。

更多数据结构在线演示,如红黑树等等,可进入下面的网址

数据结构可视化网址

Binary Search Tree Visualization (usfca.edu)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号