Map在代码中用到得非常多,它是无序的、key-value结构的,其读取会非常快。
今天看了个小文章Map判空 、空字符串、空key值等各种判断方法,你都掌握了吗?便自己也玩一下。
一、判空

因为对象已经new出来了,所以map指向的是内存里的一块空间,它不是null。要判断map里是否没有键值对,应该用isEmpty()。
在HashMap实现类中,isEmpty()的逻辑是这样的:
public boolean isEmpty() {
return size == 0;
}
所以,代码中也可以通过.size()来判断,但是没有isEmpty()优雅呢:

二、判空2

已经指定了map就是null,没想到打印日志时还搞出了29行的笑话(⊙﹏⊙)
注意:使用isEmpty()前还是得判null,否则可能空指针。
标准写法如下:
if(map != null && !map.isEmpty()){
System.out.println("这是标准写法");
}
三、key和value都可为null

注意,map.put(null,null);是能够执行的!
四、取key为null
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2E2IDtXD-1690973454147)(https://imgblog.csdnimg.cn/9659a74a5b014d3ebbde3be34f2031b1.png)]](https://img-blog.csdnimg.cn/9c8d0a7c40b7481da9050370468f50b5.png)
注意map里get的是null,是能够取到值的。
当value为null时,get这个key得到的为null,与获取一个不存在的key效果一样。
五:其他
其他的方法没有玩,就不记录了,像是contailsKey,entry啥的就先不记录了。




![[语义分割] ASPP不同版本对比(DeepLab、DeepLab v1、DeepLab v2、DeepLab v3、DeepLab v3+、LR-ASPP)](https://img-blog.csdnimg.cn/08d74f7c54de4c45b4344eab71438481.png#pic_center)














