假设您要在Java中实现集合论概念,例如element
,set
,collection
和relation
:您将如何表示空集 ∅
?
如果我想到数据库的三值逻辑所使用的NULL
概念,我是否会误导自己?
答案 0 :(得分:34)
返回空集(不可变)。这个集是可序列化的。不像 类似命名的字段,此方法已参数化。这个例子 说明了获取空集的类型安全方法:
Set<String> s = Collections.emptySet();
实施说明:此方法的实现无需创建单独的Set对象 每次通话。使用这种方法的成本可能相当 使用同名的字段。 (与此方法不同,该字段不会 提供类型安全。)
答案 1 :(得分:11)
使用null
来表示空集是糟糕的主意。 null
的行为与Set
不同,因为(显然)所有对其执行操作的尝试都会抛出NullPointerException
。这意味着,如果您使用null
来表示空集,那么您的代码将会被null
的测试所困扰......如果您错过了一个,那么您就会遇到错误。
解决方法是使用Collections.emptySet(),如果你想要一个不可变的空集,或者如果你想要一个空的可变集,则创建一个适当的Set
类的实例。