Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

Map是一种无序的基于key-value数据结构。对于开发人员来说,除了JSON以外,这种存储的方式最熟悉不过了。

经常在研发的过程中,高频用到Map的数据结构。在业务逻辑层处理中,往往会有一些对Map数据类型进行一些判空的处理,自己总结了一下,将判断方法写出供大家参考:

一、Map本身的判空

1.1“==null”不能判断Map的本身是否为null

首先看我的demo

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

初入Java的时候可能会有疑问,map还没有向里面添加任何值,为什么==null不成立?其实很简单,面向对象的基础中曾有说明,当new的时候,将创造了一个新的对象或者说是一个新的实例,没有new之前,是没有它的内部方法的,只有new了以后,这些东西和方法在内存中才会真的存在,及指向了一个具体地址。

如上图,我们在new的时候 调用了HashMap的无参构造方法,从源码层面看,该方法为当前对象开辟了默认的内存大小空间。

因此,得到的结果就是,当new了以后,该对象指向的是一个地址而不是一个null’值,所以在此时用“==null”并不能成立,什么情况下可以利用“==null”?如下图所示:

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

当它就是个空值得时候就可以利用“==null“来判断,这里的等于null 换在代码里,右边的表达式可以是一个放回了null值的方法。为当前map赋值了null,项目中就可以判断,当map没有new得时候或者是为其复制了null的时候。就可以利用=null来判断。

1.2map.isEmpty()判断为空

当map没有向里面put数据的时候,可以利用map自带得方法来进行判断该Map是否里面有值,如下图得Demo:

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

由此可见,map.isEmpty()当没有进行put方法操作得时候,.isEmpty()可以判断该Map里面是否有键值对存在。

1.3“==null”与“isEmpty()”最大的区别

如果map是一个null存在,那么在利用isEmpty()来判空将报错空指针异常NullponiterException。如下图

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

此外,还要注意一种情况:

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

如果该map里面会有这种情况的话,那么这两种判空方法将不能够实现业务处理。也就诞生了map的另一种判断方法,下面会详解。

2.1 map.containsKey(Object key)判断map中是否存在此键值对

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

map.containsKey(Object key)方法可以判断出这个map中是否包含了某一个键值对,返回值为Boolean类型,在括号中填写想要查找的key值,若包含则为true,否则为false

2.2 对map中key值对应的value进行判断

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

2.3对map中key对应的value为空字符串时候的判断。

在这里会涉及到泛型的问题,如若value的值的泛型为String类型的则直接可以利用下面的方法:

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

可以取出想判断的value的key值.isEmpty()来判断。当然,如果泛型不是String类型的是否则可以利用如下的办法来解决:

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

.equeals()的方法可以很好的来判断这个map中的key对应的value是否为空。

二、总结

一般来说,对于数据类型的判空应该将空值和空字符串的问题都要判断上,逻辑层处理的时候很重要,如果没有进行严格的空值,对后面的业务处理会造成很麻烦,因为java的运行方式是一行一行的来读取,只要一个if条件进去以后会执行一连串的方法,所以数据判断是很重要的一个前提,直接影响到后续的程序执行。欢迎伙伴们来给我提出宝贵的意见和思路,一起共同进步。

来源:blog.csdn.net/goGoing_/article/details/102532715
后端专属技术群

构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!

文明发言,以交流技术职位内推行业探讨为主

广告人士勿入,切勿轻信私聊,防止被骗

Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

加我好友,拉你进群

原文始发于微信公众号(Java笔记虾):Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154409.html

(1)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!