Collections的emptyList() emptyMap() emptySet()
Collections的emptyList() emptyMap() emptySet()
在看Collections时看到这三个方法
Collections.emptySet()
Collections.emptyList()
Collections.emptyMap()
会生成指定类型的空List Set Map,而且是不可变的,如进行add()操作会报java.lang.UnsupportedOperationException,返回这样不可变的空集合有什么作用呢?
方法内部会返回static final成员,创建后相当于常量可重复引用,当需要使用一个空集合时不用new去分配内存,比如一个测试用例API接口就需要一个
Map<String,Object>,
若此时只需要一个空map跑用例,直接用Collections.emptyMap()作为参数即可防止空指针出现,当你的代码需要一个集合而这个集合可能不存在,此时尽量使用空集合而不是null,因为集合一个常用的操作就是遍历,你不知道你返回的结果在后续会不会被遍历。比如一个查询步骤返回一个集合,当返回一个空集合是就可以用这类方法,还可以防止后续对这个空集合再做add操作
参考Effactive JAVA 43条:返回0长度的数组或者集合,而不是null
对于泛型集合无需指定其类型参数,如
Map<Foo, Comparable<? extends Bar>> fooBarMap = new HashMap<Foo, Comparable<? extends Bar>>();
只要Map<Foo, Comparable<? extends Bar>> fooBarMap = Collections.emptyMap();
即可,起到简化代码作用使用集合的一个好习惯就是使用 immutable collection,参考 http://stackoverflow.com/questions/214714/mutable-vs-immutable-objects/214718#214718
@Test public void test_emptySet() {Set<String> s1 = new HashSet<String>();Set<File> s2 = new LinkedHashSet<File>();Set<Integer> s3 = new TreeSet<Integer>();assertTrue(s1.equals(Collections.emptySet()));assertTrue(s2.equals(Collections.emptySet()));assertTrue(s3.equals(Collections.emptySet()));s1.add("abc");assertFalse(s1.equals(Collections.emptySet()));s1.clear();assertTrue(s1.equals(Collections.emptySet())); }
参考
http://www.cnblogs.com/booth-sun/p/5625764.html
https://coderanch.com/t/536728/java/java/Collections-emptySet-Collections-emptyList-Collections
http://stackoverflow.com/questions/14846920/collections-emptymap-vs-new-hashmap
Collections的emptyList() emptyMap() emptySet()相关推荐
- ArrayList()和Collections.emptyList()的区别emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方
前言 Java中ArrayList或许是我们平时开发最常用的一个集合类了,其次是HashMap,基本上满足了业务开发的绝大多数场景.今天要说的就是Collections.emptyList()和new ...
- Collections 的 emptyList()、emptyMap() 、emptySet()
Collections.emptyList() Collections.emptyMap() Collections.emptySet() 参考链接: https://stackoverflow.co ...
- java emptylist_Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方...
先说明一下好处有哪些: 1,如果你想 new 一个空的 List ,而这个 List 以后也不会再添加元素,那么就用 Collections.emptyList() 好了. new ArrayList ...
- 【Java】Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方
1.概述 2.好处 如果你想 new 一个空的 List ,而这个 List 以后也不会再添加元素,那么就用 Collections.emptyList() 好了.new ArrayList() 或者 ...
- Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方。
https://blog.csdn.net/qq_27093465/article/details/65444622
- java emptylist_Java中Collections的emptyList、EMPTY_LIST详解
原创:https://mingyang.blog.csdn.net/ 在写方法的时候可能结果集不存在,需要返回null,在调用这个方法的地方就要做一个null判断,很繁琐,容易出问题,这个时候就可以使 ...
- Java集合之Arrays和Collections
转载自:http://liuguoquan727.github.io/2015/12/18/Java%E9%9B%86%E5%90%88%E4%B9%8BArrays%E5%92%8CCollecti ...
- [转载] java避免空指针异常_第1部分:在现代Java应用程序中避免空指针异常
参考链接: Java的instanceof及其应用 java避免空指针异常 空做与不做 (Null do's and don'ts) In the talk Null References: The ...
- java10 WeakHashMap
WeakHashMap: 对象所占用的区域是不能直接操作的,都是通过引用来操作.引用分类: 1.强引用(StrongReference):gc(垃圾回收机制)运行时不回收.例如字符串常量池.字符串虽然 ...
最新文章
- 提升篇——SELINUX相关介绍
- centos6.3下yum安装redis
- (-215:Assertion failed) dst.data == (uchar*)dst_ptr in function 'cvShowImage'
- Sublime Text 3在ubuntu12.10下无法中文输入的解决方案
- 查询mysql视图_MySQL数据库简介及常用命令
- CCNA-第十五篇-DHCP配置+SDN介绍(最后一章)
- PHP获取服务器端的相关信息
- KerasSeq2seqGeneration:基于seq2seq模型的文本生成任务项目
- 深化创客教育,用人工智能创造艺术
- Win11如何自动关机 windows11自动关机的设置方法
- 1.13 Linux创建与删除用户
- 惠普打印机P1108驱动无法安装怎么处理?
- CRM是什么?CRM客户管理系统主要的功能,作用,特点分别有哪些?
- python下载哪个好_tensorflow用python哪个版本更好?
- 环境工程学(整理知识点)
- 雅诗兰黛公司宣布线上业务部门领导层更新
- win10设置护眼颜色(豆沙绿)
- win10电脑找不到WLAN的解决方法(不显示附近wifi)
- SonrLint常见解决方案
- Linux:生成core的几种方式
热门文章
- MYSQL:changer buffer 和 redo log
- 吉林大学人工智能学院计算机,吉林大学成立人工智能学院
- android渲染是skia与egl,opengl和skia哪个快 游戏电脑问题解决分享!
- Arduino Mind+编程 轮询读取多个软串口数据的方法讨论
- 公司倒闭后不注销有什么后果?不注销公司的几大结果
- Linux内核中的算法和数据结构
- 用php蓝天采集器抓取今日头条ajax的文章内容
- OPPO Pad 评测怎么样
- 苹果电脑(mac)上远程连接windows的软件
- 不定代词both/either/neither的区别