2 回答
返回空集(不可变)。这个集合是可序列化的。与同名字段不同,此方法是参数化的。此示例说明了获取空集的类型安全方法:
Set<String> s = Collections.emptySet();
实现说明:此方法的实现不需要为每个调用创建单独的 Set 对象。使用此方法的成本可能与使用同名字段的成本相当。(与此方法不同,该字段不提供类型安全。)
用来null
表示一个空集是个坏主意。A 的null
行为不像 aSet
因为(显然)所有对其执行操作的尝试都会抛出NullPointerException
. 这意味着,如果你用它null
来表示一个空集,你的代码将充满对null
... 的测试,如果你错过了一个,你就有了一个错误。
如果您想要一个不可变的空集,则实际的解决方案是使用,或者如果您想要一个开始为空的可变集,则Collections.emptySet()
创建一个适当Set
类的实例(例如)。new HashSet<>()
在重读这个问题时,我意识到你的意思可能与我原来的理解不同。
如果您尝试从头开始在 Java 中实现/建模数学集合论概念,您可能会实现Set
为不可变类。(在数学中,你不会改变事物!)空集只是一个Set
没有元素的实例。无需特殊处理。
这个NULL
概念不是必需的……除非你特别想在你的集合数学模型中加入一个“空”、“未定义的集合”或一些类似的概念。(如果您是,我不确定我们是否可以在不了解您的模型的情况下为您提供建议……从数学的角度来看。)