gpt4 book ai didi

java - 为什么空集(如 {} 中所示)是所有集合的子集? ( java )

转载 作者:行者123 更新时间:2023-12-01 10:05:55 24 4
gpt4 key购买 nike

所以我有一个关于集合的简单问题。

我最近在编码时发现,无论我将我的空集与什么进行比较(使用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

当询问测试器是否包含空集的所有元素时,我们得到 true。当询问测试器是否包含集合中的所有元素时,仅包含 A null ,我们得到错误。

有什么解释吗?

非常感谢!〜安德鲁·M

最佳答案

根据wikipedia definition of subset :

If A and B are sets and every element of A is also an element of B, then:

  • A is a subset of (or is included in) B

换句话说,A 是 B 的子集,当且仅当 A 中不存在不在 B 中的元素。

如果 A 是空集,则 A 中没有元素不在 B 中,因此空集始终是 B 的子集。

关于java - 为什么空集(如 {} 中所示)是所有集合的子集? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36481429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com