Java 8 使用 Stream API 从 List<User> 中排除 List<String> 中已存在的 User 对象
Java 8 使用 Stream API 从 List<User> 中排除 List<String> 中已存在的 User 对象
本文介绍使用 Java 8 Stream API 从 List<User> 中排除 List<String> 中已存在的 User 对象的方法。您可以使用 filter 操作符来排除掉 codes 中已存在的 user。
首先,您需要将 codes 列表转换为一个 Set,以便更快地检查某个 user 是否存在于 codes 中。然后,您可以使用 Stream 的 filter 操作符来过滤掉 codes 中已存在的 user。
示例代码
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
class User {
private String code;
private String name;
public User(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
List<User> lists = new ArrayList<>();
lists.add(new User("code1", "name1"));
lists.add(new User("code2", "name2"));
lists.add(new User("code3", "name3"));
List<String> codes = new ArrayList<>();
codes.add("code1");
codes.add("code2");
Set<String> uniqueCodes = new HashSet<>(codes);
List<User> filteredLists = lists.stream()
.filter(user -> !uniqueCodes.contains(user.getCode()))
.toList();
filteredLists.forEach(user -> System.out.println("Code: " + user.getCode() + ", Name: " + user.getName()));
}
}
在上面的示例代码中,我们创建了一个 User 类,它具有 code 和 name 属性。然后,我们创建了一个 lists 列表和一个 codes 列表,用于存储 User 对象和代码字符串。我们将 codes 列表转换为一个 Set,并使用 Stream 的 filter 操作符来过滤掉 lists 中已存在于 codes 中的 User 对象。最后,我们使用 forEach 操作符打印过滤后的 User 对象的 code 和 name 属性。
输出结果
Code: code3, Name: name3
通过上面的示例代码,您可以轻松地使用 Java 8 的 Stream API 从 List<User> 中排除 List<String> 中已存在的 User 对象。
原文地址: https://www.cveoy.top/t/topic/qh3D 著作权归作者所有。请勿转载和采集!