使用Java Stream过滤部门ID不在指定列表中的User对象集合
实现方案
首先你需要为User类的私有字段departmentId添加Getter方法,否则外部无法访问该属性:
public class User { private String UserID; private String departmentId; private String email; // 新增部门ID的Getter方法 public String getDepartmentId() { return departmentId; } }
高性能版本(推荐,适合数据量较大的场景)
先将需要排除的部门ID列表转换为HashSet,HashSet的contains查询时间复杂度为O(1),远优于List的O(n),过滤效率更高:
import java.util.HashSet; import java.util.Set; import java.util.stream.Collectors; // 1. 转成HashSet优化查询性能 Set<String> excludeDeptSet = new HashSet<>(departmentIdList); // 2. 使用Stream过滤用户列表 List<User> filteredUsers = userList.stream() .filter(user -> !excludeDeptSet.contains(user.getDepartmentId())) .collect(Collectors.toList());
轻量版本(适合小数据量场景)
如果用户数据量很小,不需要考虑性能问题,可以直接用原列表判断,代码更简洁:
List<User> filteredUsers = userList.stream() .filter(user -> !departmentIdList.contains(user.getDepartmentId())) .collect(Collectors.toList());
内容的提问来源于stack exchange,提问作者MA-Dev
相关产品推荐
相关产品推荐

