- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Map.of()
和Collections.emptyMap()
,List.of()
和有区别吗>Collections.emptyList()
和 Set.of()
和 Collections.emptySet()
之间?
最佳答案
是,emptyXyz
返回的集合之间甚至存在行为差异,而不仅仅是技术差异。 Collections
中的工厂方法类和新of
JDK 9 的接口(interface)( Map
、 List
、 Set
)中引入的工厂方法,如果它们是在没有参数的情况下调用的。
相关区别在于新的 of
返回的集合工厂方法不允许null
键和值(如 API 文档中的 List、Set 和 Map 接口(interface)所指出的)。这听起来可能与空集合无关,但即使它没有被清楚地记录下来,即使是新集合实现中的访问器方法也会检查空值。
差异的一些例子:
Collections.emptyList().contains(null)
将返回 false,而 List.of().contains(null)
会抛出 NullPointerException
.
Collection.emptyMap().getOrDefault(null, V)
将返回 V
, 而 Map.of().getOrDefault(null, V)
会抛出 NullPointerException
.
正如目前在 Oracle 的 JDK 9 中实现的那样,至少以下新工厂方法返回的集合上的方法将抛出 NullPointerException
s,但使用 Collections
中的旧工厂方法表现得“理智”(就像集合类最初是如何设计和指定以支持空键和值一样)类:
List.of().contains(null);
Set.of().contains(null);
Map.of().containsKey(null);
Map.of().containsValue(null);
Map.of().getOrDefault(null, <any>);
关于java - Map.of() 与 Collections.emptyMap(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404933/
我不明白为什么在将 Collections.emptyMap() 分配给 map 引用时将 Collections.emptyMap() 作为参数传递时出现错误没有提供错误,下面是我尝试过的代码示例,
Map.of()和Collections.emptyMap(),List.of()和有区别吗>Collections.emptyList() 和 Set.of() 和 Collections.empt
前言 Java中ArrayList或许是我们平时开发最常用的一个集合类了,其次是HashMap,基本上满足了业务开发的绝大多数场景。今天要说的就是Collections.emptyList()和new
我是一名优秀的程序员,十分优秀!