Java8 map.getOrDefault()你真的了解吗

大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。

map.getOrDefault()方法

在Java编程中,Map是一种非常常用的数据结构。Map通常用于存储键值对,其中每个键映射到一个值。当我们尝试访问一个不存在的键时,Map会返回null值。这在某些情况下可能会导致错误,因此Java 8引入了一个新的方法getOrDefault(),该方法可用于解决这个问题。

getOrDefault()方法的语法如下:

该方法接受两个参数:要查找的键和默认值。如果键存在,则返回与该键关联的值,否则返回指定的默认值。

default V getOrDefault(Object key, V defaultValue) {V v;return (((v = get(key)) != null) || containsKey(key))? v: defaultValue;}

当使用Map集合时,如果我们尝试访问一个不存在的键,则会返回一个null值,这在某些情况下可能会导致错误。使用Map的getOrDefault()方法可以解决这个问题。

上代码:当我们需要获取某个对象的值进行一些操作,如果map的value值为空,就会抛出空指针异常,空指针异常在开发中有时候很恼火。

class Demo {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("1", 10);map.put("2",20);// 如果获取一个不存在的key会怎样?Integer str = map.get(3);// 空对象的引用方法会抛出 NullPointerExceptionstr.equals("str");}
}

结果如下:

在这里插入图片描述

使用getOrDefault()方法

class Demo {public static void main(String[] args) {// 创建一个Map对象Map<String, Integer> map = new HashMap<>();// 添加键值对到Map中map.put("高启强", 1);map.put("高启盛", 2);map.put("歪驴子", 3);// 获取键为"高启强"的值int count1 = map.getOrDefault("高启强", 0);System.out.println("Count1: " + count1);// 获取键为"老默"的值int count2 = map.getOrDefault("老默", 0);System.out.println("Count2: " + count2);}}

结果如下:
在这里插入图片描述
在上面的示例中,我们首先创建一个Map对象,并向该Map中添加三个键值对。然后,我们使用getOrDefault()方法检索键为"高启强"和"老默"的值。由于"高启强"存在于Map中,因此返回值为1,而"老默" 不存在于Map中,因此返回默认值0。

使用场景

getOrDefault()方法通常用于编写更健壮的代码,以避免空指针异常。例如,假设我们有一个存储单词计数的Map,我们可以使用getOrDefault()方法来计算单词出现的次数,如下所示:

class Demo {public static void main(String[] args) {// 创建一个Map对象Map<String, Integer> wordCount = new HashMap<>();// 定义一句话String sentence = "welcome to java and welcome to here";// 将句子拆分成单词String[] words = sentence.split(" ");// 统计每个单词出现的次数for (String word : words) {int count = wordCount.getOrDefault(word, 0);wordCount.put(word, count + 1);}// 输出每个单词出现的次数for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {System.out.println(entry.getKey() + " : " + entry.getValue());}}}

结果如下:

在这里插入图片描述

在上面的示例中,我们创建了一个空的HashMap来存储单词计数。然后,我们定义了一个包含单词的句子,并使用split()方法将句子拆分成单词数组。接下来,我们使用for循环遍历单词数组,并使用getOrDefault()方法获取每个单词的计数。如果Map中不存在该单词,则默认计数为0。最后,我们使用put()方法将更新的计数存储回Map中。最后,我们遍历Map,输出每个单词及其出现次数。

最后

Map.getOrDefault()方法是一种非常有用的方法,它可以让我们更方便地处理Map中不存在的键。它通常用于编写更健壮的代码,以避免空指针异常。在使用该方法时,请注意defaultValue参数的类型必须与Map中值的类型兼容,否则会导致编译时错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58406.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同是打工人,学Python搞副业的朋友跟高启强一样实现逆袭了?

年过完了&#xff0c;现在已经回归工作岗位&#xff0c;接着拧自己的螺丝钉&#xff0c;不过&#xff0c;假期也不算寂寞&#xff0c;追了大热的电视剧《狂飙》。卖鱼小贩高启强的逆袭让我这种打工人太羡慕了&#xff0c;当他坐在白金瀚的办公室里美滋滋的喝着红酒的时候&#…

张杰清唱高启强专属BGM简直就是天作之合,千万别点进来看

张杰清唱高启强专属BGM简直就是天作之合&#xff0c;千万别点进来看&#xff0c;#张杰#BGM#音乐 张杰演唱的《听》狂飙高启强自从出现在抖音上更是火得不可思议&#xff0c;它成为了不少年轻人喜爱的BGM&#xff0c;尤其是用它作为专属BGM的抖音视频更是受到网友的一致好评。 …

老默我想吃鱼了(抽象艺术)

目录 指针地位 代码示例 人物关系 代码分析 总结 指针地位 在C语言中 指针的地位可以说是王中王 代码示例 如下 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main() {int a 15;printf("老默出手前鱼的值:%d\n", a);int* pa &a;*pa 30;p…

冯雷老师:为什么大嫂陈书婷让高启强终生难忘?

高启强对大嫂陈书婷的感情非常深&#xff0c;大嫂死后高启强终生未娶&#xff0c;那为什么大嫂陈书婷让高启强终生难忘呢&#xff1f; 第一、既能助力男人&#xff0c;又识大体懂分寸。在帮助高启强拜泰叔当干爹后&#xff0c;就回归家庭当一个贤妻良母。从不插手老公的生意。…

学术汇报(academic presentation)/PPT应该怎么做?

已经上了研究生两年了&#xff0c;但是一直没有规范过PPT应该怎么做&#xff1f;都是瞎做的&#xff0c;也没有注意过排版什么的&#xff0c;前一段时间被老师批评后&#xff0c;才开始想怎么做好学术汇报&#xff0c;下面将我整理的一些规范和步骤记录下来 一些琐碎的事情&…

阿里、腾讯御用PPT设计师:让你在年终汇报中做最靓的仔!

你知道现在年轻人靠什么赚钱吗&#xff1f; 前几天&#xff0c;知乎上一篇关于“副业”的回答吓我一跳&#xff0c;一个大三学生&#xff0c;只靠副业赚够14W。 14万什么概念&#xff0c;是一个普通白领不吃不喝至少2年的工资。 干什么能一下赚这么多&#xff1f; 他一没抢钱二…

ChatGPT中的提示工程(Prompt Engineering)怎么做?50页最新PPT下载

整理自&#xff1a;专知 在公众号后台回复 Prompt Engineering 即可获取PPT。 ChatGPT爆火之后&#xff0c;也逐渐衍生出一大堆新的概念和机会。提示工程&#xff08;Prompt Engineering&#xff09;便是其中之一。据笔者所知&#xff0c;国内外目前已有提示工程相关的工程师岗…

用 ChatGPT 将 Excel 工作效率提高 10 倍!离做PPT还远吗

源&#xff5c;机器之心 在未来&#xff0c;精通 Excel 或许不再是简历亮点了。 ChatGPT 自去年 11 月 30 日 OpenAI 重磅推出以来&#xff0c;这款 AI 聊天机器人迅速成为 AI 界的「当红炸子鸡」。一经发布&#xff0c;不少网友更是痴迷到通宵熬夜和它对话聊天&#xff0c;就为…

招银网络科技 笔试、面试

1. 笔试 1.1 题目 有16种状态码分别是1-16&#xff0c;本来应该记为{1, 1, 1, 3}&#xff0c;但是由于粗心记为{1113}&#xff0c;题目&#xff1a;求出给定的输入如{1113}能够构成不同状态码的个数。{1113}可以构成{1, 1, 1, 3}, {11, 1, 3}, {1, 11, 3}, {1, 1, 13}, {11, …

招商银行网点管理系统

目录 功能一&#xff1a;查询所有展示 1.根据城市来进行条件查询 2.当进入首页后显示所有网点信息 3.根据城市进行条件查询 功能二&#xff1a;新增网点 功能三&#xff1a;修改网点 功能四&#xff1a;删除功能 功能一&#xff1a;查询所有展示 1.根据城市来进行条件查…

独家 | 招商银行:玩转校园招聘新方式 挖掘金融科技新人才

数字经济时代&#xff0c;金融科技人才队伍的引进与培养是招商银行人才体系建设的关键任务。 01.金融科技校招2大核心课题 招商银行数字化转型过程中&#xff0c;线上化、生态化、平台化、智能化、数据化全面加速发展&#xff0c;对人才队伍能力提出新要求。 2大核心课题&am…

【招商银行数据方向笔试题】—— 信用卡推荐客户列表

题目&#xff1a; 现在信用卡开展营销活动&#xff0c;持有我行信用卡客户推荐新户办卡&#xff0c;开卡成功后可获得积分奖励。规定每个客户最多可推荐两个新户且一个新户只能被推荐一次。但允许链接效应&#xff0c;即若客户A推荐了新户B&#xff0c;新户B推荐新户C&#xff…

金融银行测试面试题分享

1、网上银行转账是怎么测的&#xff0c;设计一下测试用例。 回答思路&#xff1a; 宏观上可以从质量模型&#xff08;万能公式&#xff09;来考虑&#xff0c;重点需要测试转账的功能、性能与安全性。设计测试用例可以使用场景法为主&#xff0c;先列出转账的基本流和备选流。…

CNAPS Code 查询(招商银行)

招商银行的妹子实在太傻了&#xff0c;根本不知道什么是CNAPS Code、联行号&#xff0c;完全答非所问。 最后还是自己搞定了&#xff0c;如图: 最后再看看招行人员的英语水平&#xff0c;真是不知道什么是东西&#xff1a; 我的群&#xff1a;1、Cocos2D&Unity&Java程序…

性能超越GPU、FPGA,华人学者提出软件算法架构加速AI实时化

作者 | 王言治&#xff0c;美国东北大学电子与计算机工程系助理教授 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 近年来&#xff0c;机器学习(Machine Learning)领域的研究和发展可谓是与日俱新&#xff0c;各式各样与机器学习相关的研究成果与应用层出不穷&…

OpenAI到底做对了什么?

OpenAI通过一系列在AI技术和产品上的突破&#xff0c;引爆了通用人工智能&#xff08;AGI&#xff09;的发展&#xff0c;被微软CEO 萨提亚 纳德拉称为“堪比工业革命的技术浪潮”。OpenAI趟出来的以大语言模型为主的AGI技术路线&#xff0c;也基本上宣告了其他AI技术路线的终…

OpenAI到底做对了什么?李建忠研思

OpenAI通过一系列在AI技术和产品上的突破&#xff0c;引爆了通用人工智能&#xff08;AGI&#xff09;的发展&#xff0c;被微软CEO 萨提亚 纳德拉称为“堪比工业革命的技术浪潮”。OpenAI趟出来的以大语言模型为主的AGI技术路线&#xff0c;也基本上宣告了其他AI技术路线的终…

使用chatGPT完成股票价格预测模型

序言 笔者对国内股票的程序API不甚了解&#xff0c;所以使用国外的股票平台Finazon&#xff0c;请读者自行参考。 在本文中&#xff0c;我使用Finazon获取我们想预测的股票的价格时间序列数据&#xff0c;然后&#xff0c;我们将这些数据输入到 ChatGPT 生成的程序中。包括数…

HM-GNN:基于分子-基序异构图神经网络的分子表示学习模型

今天给大家介绍一篇由爱荷华州立大学的Zhaoning Yu 与Hongyang Gao发表在ICML&#xff08;International Conference on Machine Learning&#xff09;上的文章。作者在该论文中考虑学习分子的基序级特征表示以改善分子整体的特征学习&#xff0c;基于此搭建了分子-基序异构图神…

神经元图片结构图,人脑神经元图片

神经元结构图示 。 &#xff08;1&#xff09;由图一可知&#xff0c;图一结构中涉及到3个神经元&#xff0c;含有2个突触&#xff0c;其中A是轴突&#xff08;神经纤维&#xff09;&#xff0c;B是树突&#xff0e;&#xff08;2&#xff09;图二中①是感受器、②是传入神经…