Set.of 对比 Collections.singleton
Set.of vs Collections.singleton
既然Set.of(E e)
的不可变实现已经在Java 9
中引入了,我们还需要使用Collections.singleton(E e)
吗?后一个的用例是什么?
从这两个实现的源代码来看,似乎并不明显。除了 Set12
实现明确拒绝反序列化之外,我没有看到任何显着差异。
我个人会为所有新代码选择 Set.of(...)
至少因为时尚的观点(更短的代码,更少的导入)。但可能我遗漏了一些关键点?
这两种方法的行为几乎相同。我能想到的唯一区别是 Collections.singleton()
允许 null
元素,而 Set.of()
不允许。
这会起作用:
Set<String> setofnull = Collections.singleton(null);
这不会(它会抛出 NullPointerException
):
Set<String> setofnull = Set.of(null);
如果您放入 Set
的元素不能是 null
,我也会选择 Set.of()
。
既然Set.of(E e)
的不可变实现已经在Java 9
中引入了,我们还需要使用Collections.singleton(E e)
吗?后一个的用例是什么?
从这两个实现的源代码来看,似乎并不明显。除了 Set12
实现明确拒绝反序列化之外,我没有看到任何显着差异。
我个人会为所有新代码选择 Set.of(...)
至少因为时尚的观点(更短的代码,更少的导入)。但可能我遗漏了一些关键点?
这两种方法的行为几乎相同。我能想到的唯一区别是 Collections.singleton()
允许 null
元素,而 Set.of()
不允许。
这会起作用:
Set<String> setofnull = Collections.singleton(null);
这不会(它会抛出 NullPointerException
):
Set<String> setofnull = Set.of(null);
如果您放入 Set
的元素不能是 null
,我也会选择 Set.of()
。