如何实现空集 - ∅?

时间:2012-07-10 13:34:03

标签: java null set-theory

假设您要在Java中实现集合论概念,例如elementsetcollectionrelation:您将如何表示空集

如果我想到数据库的三值逻辑所使用的NULL概念,我是否会误导自己?

2 个答案:

答案 0 :(得分:34)

使用Collections.emptySet():

  

返回空集(不可变)。这个集是可序列化的。不像   类似命名的字段,此方法已参数化。这个例子   说明了获取空集的类型安全方法:

 Set<String> s = Collections.emptySet();   
     

实施说明:此方法的实现无需创建单独的Set对象   每次通话。使用这种方法的成本可能相当   使用同名的字段。 (与此方法不同,该字段不会   提供类型安全。)

答案 1 :(得分:11)

使用null来表示空集是糟糕的主意null的行为与Set不同,因为(显然)所有对其执行操作的尝试都会抛出NullPointerException。这意味着,如果您使用null来表示空集,那么您的代码将会被null的测试所困扰......如果您错过了一个,那么您就会遇到错误。

解决方法是使用Collections.emptySet(),如果你想要一个不可变的空集,或者如果你想要一个空的可变集,则创建一个适当的Set类的实例。