gpt4 book ai didi

Java 8 : check for common elements in two lists using streams

转载 作者:行者123 更新时间:2023-11-29 08:26:06 25 4
gpt4 key购买 nike

我正在寻找一个语句来根据用户名检查两个用户列表中是否存在任何匹配项。

List<User> a;
List<User> b;
for (User user : a) {
for (User newUser : b) {
if (user.getName().equals(newUser.getName())) {
}
}
}

如何在 Java 8 中编写此代码?像这样的东西:

List<User> intersect = a.stream()
.filter(User::getName)
.collect(Collectors.toList());

最佳答案

当使用 hashCodeequals 正确定义 User 时(否则您可以尝试使用 TreeSet 而不是 HashSet ), 做集合操作:

Set<User> common = new HashSet<>(a);
common.retainAll(b);

如果 User.getName 不用于相等:

Set<User> common = new TreeSet<>(Comparator.comparing(User::getName));
common.addAll(a);
common.retainAll(b);

列表(也作为流)上的两个嵌套 for 循环的复杂度为 O(N²),而这是 O(N.log N)。

关于Java 8 : check for common elements in two lists using streams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52964811/

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