如何解决Collections.emptySet与新的HashSet <>
如何验证Set是空集还是新的HashSet ()? 尝试了两种方法-
-
size
-
CollectionUtils.isEmpty()
两者都得出相同的值。
解决方法
当然,新鲜的new HashSet<>()
是空的,Set.of()
或Collections.emptySet()
也是如此。重点是:两个都是空集,我不知道为什么你要说出两者之间的区别。
一个区别是new HashSet<>()
现在为空,但以后可能为空(可以更改;可以向其中添加内容),而根据规范,Set.of()
的结果或Collections.emptySet()
,它们现在为空,以后将为空:您无法向其中添加任何内容,对其调用.add将导致运行时异常。
这无异于问:我怎么知道它是否是不变的。不幸的是,您基本上不能这样做,所以可以回溯到:为什么要知道?
, Collections.emptySet()
返回EmptySet
中的静态类java.util.Collections
,但是new HashSet<>()
返回java.util.HashSet
类。这两个集合都是空的,即实例化后大小为0,但是您可以通过调用.getClass()
来区分这两个集合,这将返回:
class java.util.Collections$EmptySet
class java.util.HashSet
,
使用.getClass查看所使用的不同实现。
,我有一种可以用来执行操作的实用方法-
Collections.EMPTY_SET.equals(mySet)
非常感谢您的回答。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。