首页 > 其他分享 >hashMap底层实现原理

hashMap底层实现原理

时间:2022-09-05 09:46:35浏览次数:68  
标签:下标 hashMap get equals 链表 哈希 原理 节点 底层

HashMap中的put()和get()的实现原理:

1、map.put(k,v)实现原理
(1)首先将k,v封装到Node对象当中(节点)。
(2)然后它的底层会调用K的hashCode()方法得出hash值。
(3)通过哈希表函数/哈希算法,将hash值转换成数组的下标,下标位置上如果没有任何元素,就把Node添加到这个位置上。如果说下标对应的位置上有链表。此时,就会拿着k和链表上每个节点的k进行equal。如果所有的equals方法返回都是false,那么这个新的节点将被添加到链表的末尾。如其中有一个equals返回了true,那么这个节点的value将会被覆盖。
2、map.get(k)实现原理
(1)先调用k的hashCode()方法得出哈希值,并通过哈希算法转换成数组的下标。
(2)通过上一步哈希算法转换成数组的下标之后,在通过数组下标快速定位到某个位置上。如果这个位置上什么都没有,则返回null。如果这个位置上有单向链表,那么它就会拿着K和单向链表上的每一个节点的K进行equals,如果所有equals方法都返回false,则get方法返回null。如果其中一个节点的K和参数K进行equals返回true,那么此时该节点的value就是我们要找的value了,get方法最终返回这个要找的value。
————————————————
版权声明:本文为CSDN博主「苟且偷生的程序员」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43370771/article/details/111353046

标签:下标,hashMap,get,equals,链表,哈希,原理,节点,底层
From: https://www.cnblogs.com/wuzhaosheng/p/16656981.html

相关文章

  • HashMap源码分析
    HashMap1.81、构造函数:赋值负载因子0.75,当负载因子大于0.75时就会发送扩容publicHashMap(){this.loadFactor=DEFAULT_LOAD_FACTOR;//allotherfie......
  • 【转】spring-session-data-redis核心原理
    这个组件的核心本质就是在实现单点登录SSO问题,将用户的登录session信息从原来的存储在jvm中转移到redis中去,微服务架构下每个应用接到请求都不会从自己的节点解析用户登录......
  • 第二章 操作系统基本原理(操作系统知识)
    一:操作系统概述 二:进程管理       PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。              三:......
  • HashMap 的实现原理
    HashMap基于Hash算法实现的,我们通过put(key,value)存储,get(key)来获取。当传入key时,HashMap会根据key.hashCode()计算出hash值,根据hash值将value保存在bu......
  • HashMap 和 Hashtable 有什么区别?
    存储:HashMap运行key和value为null,而Hashtable不允许。线程安全:Hashtable是线程安全的,而HashMap是非线程安全的。推荐使用:在Hashtable的类注释可以看到,Hash......
  • 交换机原理
                                 交换机的原理 交换机是一种用于电(光)信号转发的网络设备。它可以为接入交换......
  • 交换机的工作原理
     1交换机的工作原理假设主机A要和主机B通信,交换机转发数据帧的过程如下:(1)MAC地址的学习和记录A主机发送数据帧(源MAC地址为00-00-00-11-11-11,目标MAC地址为00-00-00-......
  • 数据链路层 交换机的工作原理
        以太网以太网是一种将几台电脑连接起来,能够进行通讯的技术,也就是组建所谓的"局域网”。所以以太网可以说是一种局域网技术但局域网技术并非只有以太网一种......
  • 交换机原理
    1.mac地址格式MAC地址的地址长度为48bit,表现为16进制MAC地址的第8个bit如果为0---单播MAC地址1---组播MAC地址 2.交换机的四大功能学习功能---------数据......
  • 【WPF】INotifyPropertyChanged 的原理刨析
    1、本文转载自https://blog.csdn.net/qhwoaini/article/details/1258360372、Wpf中的Binding    熟悉wpf的朋友都知道wpf中大部分控件都继承自FrameworkElement,F......