104科技
当前位置: 首页 网络知识

hashmap底层原理(hashmap底层原理1.8)

时间:2023-08-17 作者: 小编 阅读量: 1 栏目名: 网络知识

具体来说,HashMap内部维护了一个Entry数组,每个数组元素即为一个链表的头节点。然而,在JDK1.8中,HashMap的底层实现发生了较大的变化,主要引入了红黑树。当链表的长度超过阈值时,链表会被转化为红黑树,这样可以提高在链表中的查找效率。由于哈希值的分布是不可预测的,因此相同哈希值的键值对可能会出现在不同的桶中,这就是哈希冲突的情况。为了提高查找效率,HashMap使用了哈希值和键的equals方法来确保在查找时可以准确地定位到相应的键值对。

HashMap是Java中的一种集合,它可以存储键值对,并且可以根据键快速地查找值。HashMap的底层是基于哈希表实现的。

在JDK 1.7及之前的版本中,HashMap的底层采用的是“数组+链表”(拉链法)的方式来解决哈希冲突。具体来说,HashMap内部维护了一个Entry数组,每个数组元素即为一个链表的头节点。当需要插入一个键值对时,首先根据键的哈希值计算出在数组中对应的位置,如果该位置上已经有元素,则将新的键值对添加到链表的尾部;如果该位置上没有元素,则直接将新的键值对作为该位置上的元素。

然而,在JDK1.8中,HashMap的底层实现发生了较大的变化,主要引入了红黑树。当链表的长度超过阈值(默认为8)时,链表会被转化为红黑树,这样可以提高在链表中的查找效率。一棵红黑树是一种自平衡的二叉查找树,它能保证在最坏情况下的查找、插入和删除的时间复杂度都是O(log n)。

HashMap的工作原理如下:

1. 当需要插入一个键值对时,首先根据键的哈希值计算出在数组中对应的位置;

2. 如果该位置上已经有元素,则将新的键值对与链表或红黑树中的节点比较,如果键已经存在,则更新该键对应的值;如果键不存在,则将新的键值对添加到链表或红黑树的尾部;

3. 如果该位置上没有元素,则直接将新的键值对作为该位置上的元素;

4. 当哈希表中的键值对数量超过阈值时,会触发扩容操作,将哈希表的容量扩大一倍,同时会重新计算每个键值对的位置。

在HashMap的查找操作中,首先会根据键的哈希值找到对应的桶(即数组中的位置),然后在链表或红黑树中查找具体的键值对。由于哈希值的分布是不可预测的,因此相同哈希值的键值对可能会出现在不同的桶中,这就是哈希冲突的情况。为了提高查找效率,HashMap使用了哈希值和键的equals方法来确保在查找时可以准确地定位到相应的键值对。

    推荐阅读
  • 计算机系统的功能强弱由什么决定 计算机系统的性能主要由什么因素决定

    计算机系统的性能主要由以下因素决定:1.CPU的频率和核心数:CPU的主频决定了计算机的运算速度,而多核心数能够实现多任务并行处理,提升计算能力。总之,计算机系统的性能主要由硬件资源和软件资源的综合性能决定。

  • 路由器的RESET是什么意思 路由器上的reset是啥意思

    路由器的RESET意味着将路由器恢复到出厂默认设置,类似于恢复原始状态。这将清除所有用户自定义的配置、密码、网络设置等,将路由器恢复到初始设置状态。路由器上的reset按钮是用于进行硬重置的按钮。通常情况下,当路由器出现故障或无法连接时,可以尝试按下reset按钮来解决问题。但请注意,进行RESET会导致丢失所有用户自定义的设置和配置,因此在执行此操作之前应该谨慎备份重要的配置信息。

  • 摄像头5mp是什么意思(摄像头3mp和5mp是什么意思)

    摄像头的MP是指摄像头的像素数,即摄像头的分辨率。1MP代表100万像素,所以5MP就表示摄像头的分辨率为500万像素。这意味着5MP摄像头拍摄的照片或视频具有更高的清晰度和更多的细节。相对于5MP摄像头,3MP摄像头的清晰度和细节会稍低一些,但仍然具有一定的画质。

  • 欢乐斗地主怎么充值欢乐豆 欢乐斗地主怎么充值

    要充值欢乐豆,您可以按照以下步骤进行操作:1.打开欢乐斗地主游戏应用。如果您在充值过程中遇到任何问题,建议您联系欢乐斗地主的客服团队,他们将会给予详细的帮助和指导。

  • 关机后未接来电会显示吗(关机期间未接来电)

    因为当手机关机时,通信功能会被关闭,手机将无法接收到任何来电信息,所以你将无法知道自己在关机期间是否有未接来电。但是,一些手机会支持来电转接功能,当手机关机时,来电会被自动转接到其他设备上,例如语音信箱或其他电话号码,此时你可以通过这些设备来查看未接来电记录。另外,一些手机也通过短信或其他方式将未接来电信息发送到关机期间的手机重新开机后显示。请注意,以上情况可能因手机品牌、型号和设置而有所不同。

  • iPhonexs可以反向充电吗 苹果xs支不支持反向充电

    苹果iPhoneXS不支持反向无线充电功能。这项特性首先在iPhone11系列中引入,允许用户使用适当的设备,例如AirPods充电盒或AppleWatch,在手机背面放置它们以进行充电。

  • 三星Galaxy(三星galaxyzflip4)

    三星GalaxyZFlip4是一款折叠屏手机,是三星公司的旗舰产品之一。它还配备了一块1.1英寸的副屏幕,用于显示时间、来电等通知。GalaxyZFlip4搭载了强大的处理器和大内存,可以提供出色的性能和流畅的使用体验。此外,GalaxyZFlip4还支持5G网络,提供快速的互联网连接速度。它还拥有长久耐用的电池寿命和快速充电功能,使用户在日常使用中更加方便。总的来说,三星GalaxyZFlip4是一款强大而时尚的折叠屏手机,具备出色的性能和创新设计,满足用户的各种需求和期望。

  • 怎么把人拉进微信群 怎么把人拉进微信群里

    要把人拉进微信群,你可以按照以下步骤进行操作:1.打开微信,进入要发起邀请的微信群对话界面。-扫描对方的个人二维码。使用以上步骤,你可以轻松地将其他人拉进微信群。

  • 蓝牙5.0和5.1和5.2的区别(蓝牙50和51和52的区别)

    蓝牙5.0、5.1和5.2是蓝牙技术的不同版本。蓝牙5.1和5.2在低功耗方面没有明显的改进。这些改进增加了蓝牙设备的功能和性能。

  • 怎么清除bios密码(bios设置密码怎么清除)

    这将清除BIOS密码。在主板上找到CMOS电池,将其取出并等待几分钟。请注意,在进行这些操作之前,请先断开电源线,并确保自己具备足够的电脑硬件知识。此外,这些方法可能会导致计算机数据丢失或其他问题,因此在使用之前,请备份重要数据或寻求技术支持的帮助。