You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:06:04