gpt4 book ai didi

java - 如何使用 java 8 Streams 查找两个 String ArrayList 之间的差异?

转载 作者:行者123 更新时间:2023-12-01 19:52:42 30 4
gpt4 key购买 nike

我需要使用 java 8 功能查找两个字符串数组列表之间的差异。目前我正在这样做

final List<String> a = new ArrayList<>();
a.add("1");
a.add("2");
a.add("3");

final List<String> b = new ArrayList<>();
b.add("1");
b.add("2");
b.add("4");

final List<String> result = a.stream().filter((s) -> b.stream().noneMatch(s::equals))
.collect(Collectors.toList());
final List<String> result2 = b.stream().filter((s) -> a.stream().noneMatch(s::equals))
.collect(Collectors.toList());

System.out.println(result);
System.out.println(result2);

final List<String> FinalResult = java.util.stream.Stream.concat(result.stream(), result2.stream())
.distinct()
.collect(Collectors.toList());

System.out.println(FinalResult);

任何人都可以为同一件事提出一个更清晰、更短的代码吗?我觉得可以用其他更简单的方式来完成。

最佳答案

您可以使用以下代码执行相同的操作:

List<String> result = b.stream()
.filter(not(new HashSet<>(a)::contains))
.collect(Collectors.toList());

private static <T> Predicate<T> not(Predicate<T> predicate) {
return predicate.negate();
}

希望有帮助。

关于java - 如何使用 java 8 Streams 查找两个 String ArrayList 之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50772074/

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