Map (五) HashMap get()

HashMap之get方法详解 1. 导读 本章节面相的是对红黑树有了解的读者, 因为JAVA引入了黑红树, 所以后面的内容中主要围绕着红黑树来展开; .1 get .2 find 2. get HashMap::get返回一个数据节点, 如果不存在则返回空; final Node<K,V> getNode(int hash, Object key) { Node<K,V>[] t... 阅读详情

首先打开源码:

    public V get(Object key) {
        Node<K,V> e;
        return (e = getNode(hash(key), key)) == null ? null : e.value;
    }

可以看到,get() 主要方法还是调用 getNode() 所以我们重点看一下这个方法:

    final Node<K,V> getNode(int hash, Object key) {
        Node<K,V>[] tab; Node<K,V> first, e; int n; K k;
        if ((tab = table) != null && (n = tab.length) > 0 &&
            (first = tab[(n - 1) & hash]) != null) {
            if (first.hash == hash && // always check first node
                ((k = first.key) == key || (key != null && key.equals(k))))
                return first;
            if ((e = first.next) != null) {
                if (first instanceof TreeNode)
                    return ((TreeNode<K,V>)first).getTreeNode(hash, key);
                do {
                    if (e.hash == hash &&
                        ((k = e.key) == key || (key != null && key.equals(k))))
                        return e;
                } while ((e = e.next) != null);
            }
        }
        return null;
    }

如果看过前面几篇文章,看到 get() 方法以后会觉得如此简单。流程:

  1. 判断数组是否不为null,数组长度是否大于0,使用 hash 计算当前存储位置是否有元素
  2. 判断当前位置存放的元素是否相同
  3. 判断当前位置存放的元素是否有 next ,即下一个元素
  4. 判断当前位置存放的是否是红黑树
  5. 遍历链表
  6. 如果都找不到相同的 key 就是返回 null

看完前面复杂的 put() 和 resize() 方法以后,感觉 get() 方法是最为简单的。明白了前面两个方法,在看这个方法一看就知道什么意思啦。所以在这里我就不多说了,不明白的先看看前面的几篇哦。

如果有那些讲的不好或者讲的不仔细的地方,欢迎评论留言。


Map (一) HashMap 构造函数的秘密
Map (二) HashMap put()方法详细解刨
Map (三) HashMap 如何利用 hash 计算存储位置
Map (四) HashMap 已故事的角度理解 resize()
Map (五) HashMap get()

Map中的值自增自减或重新操作值的最优雅写法,无需调用get()和put(),包含HashMap compute()源码分析 Map中的值自增自减或重新操作值的最优雅写法,无需调用get()和put() 相信各位在开发的过程中总能遇见类似这样的需求:查询Map中的某一key值,如果有就将值加一,没有就put新的key值为1 (或对值进行其他操作)。 通常大多数人的写法是这样的: @Test public void test1() { HashMap<Integer, Integer> map = new HashMap(); map.put(1, 10); // {1=1 阅读详情

相关推荐

使用Map.of()导致的空指针问题

Map.of()使用get()空指针问题

Horizon_dong的博客 1319

Java Map get()用法及代码示例

Java中的Map接口的get()方法用于检索或获取由参数中提到的特定键映射的值。当映射不包含键的此类映射时,它将返回NULL。参数:该方法采用对象类型的一个参数key_element,表示应该获取其关联值的键。注意:可以对具有不同数据类型的变化和组合的任何类型的映射执行相同的操作。返回值:该方法返回与此Map集合中的key_element关联的值。示例1:将字符串值映射到整数键。示例2:将整数值映射到字符串键。...

m0_67400973的博客 5948

深入掌握英飞凌TriCore中断向量表

摘要:本文探讨了英飞凌Tc277芯片中断机制的原理与实现,重点解析了中断向量表基地址的链接文件定义方式、BIV寄存器的初始化过程以及每个中断条目的32字节空间分配规则。通过分析中断向量号(1-255)的计算方法,阐明了中断条目跳转地址(如STM0中断向量号37对应0x800F04A0)的生成逻辑。文章还揭示了.map文件中14字节跳转指令的组成原理,以及最终通过a14寄存器跳转到实际中断函数(如stm0Sr0ISR)的执行流程,为嵌入式开发人员理解中断处理机制提供了清晰的技术路径。

IT技术猿猴的博客 1712

Map.get、Map.set、Map.has方法

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。(2)set() 方法为Map对象添加一个指定键(key)和值(value)的新元素。(3)has() 返回一个bool值,用来表明map 中是否存在指定元素。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。(1)get() 方法用来获取一个 Map 对象中指定的元素。

m0_54849806的博客 2710

win2012没有远程桌面授权服务器可以提供许可证 如何远程

如果远程windows服务器时,提示“没有远程桌面授权服务器可以提供许可证 如何远程”,先通过以下方式进行强制登录,然后在对服务器进行设置即可,延期使用。 强制登录服务器方式; 1、运行—输入:mstsc /admin /v ip:端口 回车即可 2、进入远程桌面,输入 ip:端口 /admin 例如:mstsc /admin /v 192.168.0.131:23568 进入服务器以后,按照以下步骤进行设置即可: ...

蜗牛快爬 1万+

VisionPro实战:5个工业视觉检测案例详解(附代码片段)

本文详细解析了VisionPro在工业视觉检测中的5个实战案例,包括PCB焊点质量检测、汽车齿轮尺寸测量、药品包装缺陷检测等。通过硬件配置方案和软件算法流程的详细介绍,帮助工程师快速掌握VisionPro的应用技巧,提升工业自动化检测效率。

weixin_29284657的博客 518

hashmap java get方法_Java HashMap get()用法及代码示例

HashMap类的java.util.HashMap.get()方法用于检索或获取由参数中提到的特定键映射的值。当映射不包含键的此类映射时,它将返回NULL。用法:Hash_Map.get(Object key_element)参数:该方法采用对象类型的一个参数key_element,表示应该获取其关联值的键。返回值:该方法返回与参数中的key_element关联的值。以下程序说明了java.ut...

weixin_42467373的博客 1105

Java — Map.keySet()、Map.put()、Map.get()【Map类、Set类】

首先,不要慌,大家来看一下API的介绍,最后会用一个代码例子进行解析: 一丶 Map<K,V> Interface Map<K,V> 参数类型 K - 由此地图维护的键的类型 V - 映射值的类型 All Known Subinterfaces: Bindings , ConcurrentMap <K,V>, ConcurrentNavigableMap &lt...

qq_27494201的博客 4314

Ubuntu下Charm-Crypto安装

经过一下午的努力终于是把Charm-Crypto给安上了,经过查询资料,大致有三种方案(两坑一可行)。 适用于我的电脑的是Ubuntu 18.04版本。 第一种方案是根据连接https://pypi.org/project/charm-crypto/的教程进行安装,但是该方案的优势在于下载快速,缺陷在于Ubuntu系统仅仅更新到13+版本。 第二种就是网络博客上的介绍,内容与第一种较类似,但是有16+,18+成功的例子,缺点就是bug太多,我大部分时间都耗在了这上边,而且还没有成功。 第三中是github上

Mr.Yi的博客 2284

Kinect V1结构光激光散斑原理及样式

   对 intel realsense F200 和 Kinect V1的coding pattern原理进行调研,知二者都使用light coding的方式,该方法与传统的coded structure light不同:传统编码结构光(空间编码,时间编码)最终使用的是三角测量的原理计算深度信息;light coding通过投射具有高度伪随机性的激光散斑,会随着不同距离变换不同

松间明月 1万+

HashMap中get()、put()详解

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。HashMap 是无序的,即不会记录插入的顺序。HashMap 如果再次添加相同的key值,它会覆盖key值所对应的内容。HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

a13641376265的博客 1080

ubuntu20.04开机黑屏卡在/dev/sda1:clean,***files,***blocks,解决心得记录

这个问题如果你百度,会发现目前有很多种解决方法。 有更新显卡驱动的,有卸载上一次安装软件的,还有各种奇奇怪怪的故障原因。 如果你是属于上述情况,那么按照百度和论坛的各种指引操作一般都能解决。 但我这里主要说一种特殊情况,就是我什么也没有操作,我什么也没干。就是正常使用系统关了机突然就报错了。 这也是自己亲自遇到的问题,做个小记录方便以后自己回顾。 上一次出现这种情况我重装系统了,这次用了两个月又出现了,重装成本太高,我接受不了,于是找到解决办法。 首先找个终端进入,进入终端的方法很多,用安装u盘

qq_41517017的博客 2万+

java map.get_Java Map get()用法及代码示例

Java中的Map接口的get()方法用于检索或获取由参数中提到的特定键映射的值。当映射不包含键的此类映射时,它将返回NULL。用法:thisMap.get(Object key_element)参数:该方法采用对象类型的一个参数key_element,表示应该获取其关联值的键。返回值:该方法返回与此Map集合中的key_element关联的值。以下程序说明了java.util.Map.get()...

weixin_42129970的博客 6749

【VS Code插件开发】通用功能(二)

本篇主要从command(命令)、menus(菜单)、快捷键三个方面讲解,都归于通用功能。

编码世界 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HashMap的get()方法的NullPointerException

HashMap的get()方法的NullPointerException @author:Jingdai @date:2020.12.07 今天写代码发现一个 bug,HashMap的 get() 方法一直报空指针异常,现记录一下。 看下面代码。 private HashMap<Integer, Integer> cache; private LinkedList<Integer> keyList; private int capacity; public LRUCache(i

qq_41512783的博客 3386

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Map集合类——HashMap

Map集合 Map集合存储的是键值对 Map集合的实现类:HashTable、LinkedHashMap、HashMap、TreeMap 1、HashMap 1.1、基础了解: 1、键不可以重复,值可以重复; 2、底层使用哈希表实现; 3、线程不安全; 4、允许key为null,但只允许有一条记录为null,value也可以为null,允许多条记录为null; 1.2、源码分析 (一)以...

代码学习之路的博客 9614

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Map和HashMap

在项目中有一句这样的代码: Map<String, Object> mapData = new HashMap<>(); 不太理解是什么意思,上网浏览解决完后总结一下。 Map接口 java.util中的集合类包含Java中某些最常用的类。最常用的集合类是List和Map。 Map是一种 键-值对(key-value) 集合,Map集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数

qq_44896028的博客 4894

hashmap java get方法_Java中HashMap的get()方法: HashMap.get() - Break易站

Java中的HashMapHashMap类的java.util.HashMap.get()方法用于检索或获取由参数中提到的特定键映射的值。当地图不包含密钥的这种映射时,它返回NULL。句法:Hash_Map.get(Object key_element)参数:该方法采用对象类型的一个参数key_element,并引用应该获取其关联值的键。返回值:该方法返回与参数中的key_element关联的值。...

weixin_29928971的博客 847

Map接口实现类HashMap、Map.Entry接口

来谈谈集合中的Map接口,它常用的实现类为HashMap。 Map接口 除了类集,Java 2还在java.util中增加了映射。 映射(map)是一个存储关键字和值的关联 或者说是关键字/值对的对象。给定一个关 键字,可以得到它的值。关键字和值都是 对象。关键字必须是唯一的。但值是可以 重复的。有些映射可以接收null关键字和 null值。而有的则不行 Map接口映射唯一关键字到值。关键字(ke

柠檬2312的博客 2070

HashMap剖析之put()和get()方法

前言 本文是基于Java 8的HashMap进行分析,主要是分析HashMap中的put()和get()方法。 下面将会分析这部分的源码,如果觉得源码分析内容太啰嗦,可以跳过源码部分,直接看源码下面的总结。 put()方法源码分析 HashMap的put()方法是我们最常用的方法,但是put()方法是怎么工作的呢? put()方法 /** * HashMap的put()方法支持k...

2的32次方 866

HashMap 的 put() 和 get() 方法工作原理

HashMap 的 put() 和 get() 方法是其核心功能,它们通过计算哈希码和索引来快速地存储和检索数据。理解这些方法的内部工作原理对于有效地使用 HashMap 至关重要。

心猿意码 956

hashmap示例_Java HashMap get()方法与示例

hashmap示例 HashMap类的get()方法 (HashMap Class get() method) get() method is available in java.util package. get()方法在java.util包中可用。 get() method is used to get the value element associated with the given...

cumt30111的博客 881

java map get_Java HashMap get() 方法

get() 方法获取指定 key 对应对 value。语法get() 方法的语法为:hashmap.get(Object key)注:hashmap 是 HashMap 类的一个对象。参数说明:key – 键返回值回与指定 key 所关联的 value。实例以下实例演示了 get() 方法的使用:import java.util.HashMap;class Main {public static ...

weixin_32098191的博客 497

Jdk1.8 HashMap中get()方法源码分析

1.说明,这里主要对jdk1.8的HashMap的get方法进行源码分析 2.本文章基于上一篇《Jdk1.8 HashMap中put()方法源码分析》 添加链接描述 3.测试源码贴这里 package com.yuhl.map; import java.util.HashMap; /** * @author yuhl * @Date 2020/10/19 23:02 * @Classname HashMap * @Description 剖析HashMap源码 */ public class

前路无畏的博客 1万+
上一篇: Map (四) HashMap 已故事的角度理解 resize()
下一篇: IDEA 为 sql 文件配置方言
Carey丶zsh
博客等级 码龄10年 15粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值