gpt4 book ai didi

Java检查两个列表中有多少元素相同

转载 作者:行者123 更新时间:2023-11-30 05:27:17 25 4
gpt4 key购买 nike

假设我有一个列表

List<String> allElements = new ArrayList<>(Lists.asList("A", "B", "C", "D", "F")); 

然后是另一个列表

List<String> randomElements = new ArrayList<>(Lists.asList("B", "D", A", "Z"));

现在我想检查 allElements 是否包含 randomElements 中的 3 个或更多元素。如果只有 2 个或更少,那么我不希望它真正启动。 (上面的例子应该返回true)我该怎么办呢?我可以使用 allElements.deleteAll(randomElements) 并获取 allElements 的长度,但这并不理想,因为我想稍后使用变量的值(这样我就可以删除它们)并在临时变量上使用 deleteAll 每个循环并不是很优雅。有不同的方法吗?简而言之,我想获取不同列表中具有相同值的元素数量,无论它们位于什么索引。

编辑:我使用了@Jesper Hustad 的解决方案

boolean listCheck(ArrayList allElements, ArrayList randomElements){
int count = 0;
for(Element a: allElements){
for(Element b : randomElements){
if(a==b){
count++;
}
}
}
return count==3;
}

我不知道这是否是最有效的解决方案(可能不是),但它对我来说是最干净的。

最佳答案

您可以使用stream,但我建议使用limit以获得更好的性能。正如 @Andy Turner 的评论中所建议的,您可以使用 Set 进行更好的改进

return randomElements.stream()
.filter(i->list1.contains(i))
.limit(3)
.count() >= 3

关于Java检查两个列表中有多少元素相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276828/

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