gpt4 book ai didi

java - Java中当比较List中有重复元素时,containsAll方法返回错误结果

转载 作者:行者123 更新时间:2023-12-05 01:25:56 27 4
gpt4 key购买 nike

第一个List为[5,5,3,7,6]并命名为FirstList,另一个List为[5,5,5]并命名为SecList。当我像这样 FirstList.containsAll(SecList) 调用 containsAll 方法来查看 FirstList 是否包含 SecList 时。显然答案是 false,但是 containsAll 方法返回 true,这是一个不正确的结果。

整个代码如下:

    List<Integer> FirstList = new ArrayList<>();
List<Integer> SecList = new ArrayList<>();

for (int j = 0; j < 3; j++)
{
SecList.add(5);
}

FirstList.add(5);
FirstList.add(5);
FirstList.add(3);
FirstList.add(7);
FirstList.add(6);
System.out.println("FirstList: " + FirstList);
System.out.println("SecList: " + SecList);
System.out.println("FirstList contains SecList? " + FirstList.containsAll(SecList));

输出是:

FirstList: [5,5,3,7,6]
SecList: [5,5,5]
FirstList contains SecList? true

看起来这个方法只有在列表不包含重复元素的情况下才能产生正确的结果。有什么办法可以简单地实现这个逻辑吗?请原谅我糟糕的英语,我非常感谢您的帮助。

最佳答案

"Obviously the answer is false,"

答案是正确的,而且应该是正确的。对于每个元素eSecList , FirstList.contains(e)返回真。就是这样containsAll应该可以工作;这里没有错误。

如果您想要这种行为,您将需要计数每个集合中的元素,也许使用 Map<E, Integer>或 Guava Multiset ,然后比较每个元素的计数。

关于java - Java中当比较List中有重复元素时,containsAll方法返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70587880/

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