This question already has answers here:
ContainsAll List Java
(5个答案)
4年前关闭。
所以我有一个关于集合的快速问题。
我最近在编码时发现,无论我将一个空的矿山与(使用
此外,
看我的代码:
执行后,此处的输出为:
当询问测试器是否包含空集合的所有元素时,我们得到了真。当询问测试人员是否包含该集合的所有元素仅包含A
有什么解释吗?
万分感谢!
〜安德鲁·M
(5个答案)
4年前关闭。
所以我有一个关于集合的快速问题。
我最近在编码时发现,无论我将一个空的矿山与(使用
containsAll
方法)进行比较,该方法将始终返回true
。我很好奇……为什么,即使我的集合每次都不将空集合与任何其他集合进行比较时,即使我的集合不包含任何空槽(例如,{1, 3, 5, , 9}
),它也总是返回true
?此外,
null
为何不这样做?我知道null
语句也是Java中的对象,但是它仍然表示“无”或“空/空”看我的代码:
import java.util.*;
class Test{
public static void main(String[] args){
Set<Object> tester = new HashSet<Object>();
Set<Object> data1 = new HashSet<Object>();
Set<Object> dataNull = new HashSet<Object>();
tester.add(1); //Adding some random stuff
tester.add(10);
tester.add(0);
dataNull.add(null);
System.out.println(tester.containsAll(data1));
System.out.println(tester.containsAll(dataNull));
}
}
执行后,此处的输出为:
true
false
当询问测试器是否包含空集合的所有元素时,我们得到了真。当询问测试人员是否包含该集合的所有元素仅包含A
null
时,我们将得到错误的结果。有什么解释吗?
万分感谢!
〜安德鲁·M
最佳答案
根据wikipedia definition of subset:
如果A和B是集合,并且A的每个元素也是B的元素,则:
A是B的子集(或包含在B中)
换句话说,A是B的子集,前提是A中没有元素,B中也没有元素。
如果A是空集,则A中没有元素,B中也没有元素,因此空集始终是B的子集。
07-24 02:05