java - HashSet.contains 返回 false 而它不应该返回

标签 java hashset

我正在尝试学习 Java,并且我达到了 HashSet 部分,长话短说,我正在测试 contain 方法。

public static void main(String[] args) {
    HashSet<Integer> firstSet = new HashSet<>();
    firstSet.add(3);

    HashSet<Integer> secondSet = new HashSet<>();
    secondSet.add(3);

    boolean var = firstSet.contains(secondSet);

    System.out.println(var);

}

我相信这段代码应该返回 true,而它返回 false。任何帮助!

最佳答案

让我们看看docs 包含:

Returns true if this set contains the specified element. More formally, returns true if and only if this set contains an element e such that (o==null ? e==null : o.equals(e)).

因为我们都知道这里没有空值,所以我们可以说如果 o.equals(e) contains 将返回 true。

o是你传递给contains的参数,它是一个HashSete 是第一个集合的元素,应该是一个Integer。由于 IntegerHashSet 是不相关的类型,因此它们相等的可能性很小。

你似乎在这里犯了一个逻辑错误。要检查一个集合是否是另一个集合的超集,请调用 containsAll相反:

Returns true if this collection contains all of the elements in the specified collection.

关于java - HashSet.contains 返回 false 而它不应该返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47722110/

相关文章:

Java 编译给出有关 servlet 库的错误

java - 使用 getMethod 从另一个类调用方法会出现错误

rust - Rust提示执行联合时没有为HashSet实现BitOr,文档指出它应该是

java - 在 List<Object[]> 中查找唯一条目

java - hashSet 中的重复值

java - 抽象对象列表的 Jaxb 解码

java - Hibernate 4.3.4 StandardServiceRegistryBuilder

java - 找不到[自定义标签]的标签库描述符

c# - 如何在 .Net 中实现 ConcurrentHashSet

java - EDT 性能非常慢,显示触发错误