Collections 的 emptyList()、emptyMap() 、emptySet()

Collections.emptyList()
Collections.emptyMap()
Collections.emptySet()

参考链接:

https://stackoverflow.com/questions/14846920/collections-emptymap-vs-new-hashmap

会生成指定类型的空 List Set Map,而且是不可变的,如进行 add() 操作会报 java.lang.UnsupportedOperationException,返回这样不可变的空集合有什么作用呢?

  • 方法内部会返回 static final 成员,创建后相当于常量可重复引用,当需要使用一个空集合时不用 new 去分配内存,比如一个测试用例 API 接口就需要一个 Map<String,Object> ,若此时只需要一个空 map 跑用例,直接用 Collections.emptyMap() 作为参数即可
  • 防止空指针出现,当你的代码需要一个集合而这个集合可能不存在,此时尽量使用空集合而不是 null,因为集合一个常用的操作就是遍历,你不知道你返回的结果在后续会不会被遍历。比如一个查询步骤返回一个集合,当返回一个空集合是就可以用这类方法,还可以防止后续对这个空集合再做 add 操作。

注意:返回0长度的数组或者集合,而不是 null

而且当我们每次都 new ArrayList() 或者 new LinkedList() ,在创建的时候就会有初始大小,多少会占用一些内存。每次使用都 new 一个空的 list 集合,浪费就积少成多,浪费就严重啦。

/**
* The empty map (immutable).  This map is serializable.
*
* @see #emptyMap()
* @since 1.3
*/
@SuppressWarnings("rawtypes")

public static final Map EMPTY_MAP =  new EmptyMap<>();

/**

* Returns an empty map (immutable).  This map is serializable.

*
* <p>This example illustrates the type-safe way to obtain an empty map:

* @implNote Implementations of this method need not create a separate

* {@code Map} object for each call.  Using this method is likely to have

* comparable cost to using the like-named field.  (Unlike this method, the

* field does not provide type safety.)

*

* @param <K> the class of the map keys

* @param <V> the class of the map values

* @return an empty map

* @see #EMPTY_MAP

* @since 1.5

*/
@SuppressWarnings("unchecked")

public static final <K,V> Map<K,V> emptyMap() {

return (Map<K,V>) EMPTY_MAP;

}

------致所有正在努力奋斗的程序猿们!加油!!
有码走遍天下 无码寸步难行
1024 - 梦想,永不止步!
爱编程 不爱Bug
爱加班 不爱黑眼圈
固执 但不偏执
疯狂 但不疯癫
生活里的菜鸟
工作中的大神
身怀宝藏,一心憧憬星辰大海
追求极致,目标始于高山之巅
一群怀揣好奇,梦想改变世界的孩子
一群追日逐浪,正在改变世界的极客
你们用最美的语言,诠释着科技的力量
你们用极速的创新,引领着时代的变迁

——乐于分享,共同进步,欢迎补充
——Treat Warnings As Errors
——Any comments greatly appreciated
——Talking is cheap, show me the code
——GitHub:https://github.com/selfconzrr

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BugFree_张瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值