Map是一种无序的基于key-value
的数据结构。对于开发人员来说,除了JSON以外,这种存储的方式最熟悉不过了。
经常在研发的过程中,高频用到Map的数据结构。在业务逻辑层处理中,往往会有一些对Map数据类型进行一些判空的处理,自己总结了一下,将判断方法写出供大家参考:
一、Map本身的判空
1.1“==null”不能判断Map的本身是否为null
首先看我的demo
初入Java的时候可能会有疑问,map还没有向里面添加任何值,为什么==null
不成立?其实很简单,面向对象的基础中曾有说明,当new的时候,将创造了一个新的对象或者说是一个新的实例,没有new之前,是没有它的内部方法的,只有new了以后,这些东西和方法在内存中才会真的存在,及指向了一个具体地址。
如上图,我们在new的时候 调用了HashMap的无参构造方法,从源码层面看,该方法为当前对象开辟了默认的内存大小空间。
因此,得到的结果就是,当new了以后,该对象指向的是一个地址而不是一个null’值,所以在此时用“==null
”并不能成立,什么情况下可以利用“==null
”?如下图所示:
当它就是个空值得时候就可以利用“==null
“来判断,这里的等于null 换在代码里,右边的表达式可以是一个放回了null值的方法。为当前map赋值了null,项目中就可以判断,当map没有new得时候或者是为其复制了null的时候。就可以利用=null来判断。
1.2map.isEmpty()判断为空
当map没有向里面put数据的时候,可以利用map自带得方法来进行判断该Map是否里面有值,如下图得Demo:
由此可见,map.isEmpty()
当没有进行put方法操作得时候,.isEmpty()
可以判断该Map里面是否有键值对存在。
1.3“==null”与“isEmpty()”最大的区别
如果map是一个null存在,那么在利用isEmpty()
来判空将报错空指针异常NullponiterException
。如下图
此外,还要注意一种情况:
如果该map里面会有这种情况的话,那么这两种判空方法将不能够实现业务处理。也就诞生了map的另一种判断方法,下面会详解。
2.1 map.containsKey(Object key)判断map中是否存在此键值对
用map.containsKey(Object key)
方法可以判断出这个map中是否包含了某一个键值对,返回值为Boolean类型,在括号中填写想要查找的key值,若包含则为true,否则为false
2.2 对map中key值对应的value进行判断
2.3对map中key对应的value为空字符串时候的判断。
在这里会涉及到泛型的问题,如若value的值的泛型为String类型的则直接可以利用下面的方法:
可以取出想判断的value的key值.isEmpty()来判断。当然,如果泛型不是String类型的是否则可以利用如下的办法来解决:
.equeals()的方法可以很好的来判断这个map中的key对应的value是否为空。
二、总结
一般来说,对于数据类型的判空应该将空值和空字符串的问题都要判断上,逻辑层处理的时候很重要,如果没有进行严格的空值,对后面的业务处理会造成很麻烦,因为java的运行方式是一行一行的来读取,只要一个if条件进去以后会执行一连串的方法,所以数据判断是很重要的一个前提,直接影响到后续的程序执行。欢迎伙伴们来给我提出宝贵的意见和思路,一起共同进步。
来源:blog.csdn.net/goGoing_/article/details/102532715
构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!
文明发言,以
交流技术
、职位内推
、行业探讨
为主
广告人士勿入,切勿轻信私聊,防止被骗
原文始发于微信公众号(Java笔记虾):Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154409.html