java lambda表达式,从一个列表list中删除存在于另外一个列表list的数据对象

一个用户列表,一个会议-用户关系表。
将用户表中,所有已经参会的人员剔除,返回没有参会人员的列表。
使用lambda表达式,相对代码非常精简,且容易理解,还能提升效率。
值得尝试。

public List<User> notInMeetingUserList(Integer meetingId, Integer companyId) throws ErrorException {
    List<YdReMeetingUser> ydReMeetingUserList = ydReMeetingUserMapper.selectByMeetingId(meetingId); // 会议-用户关系列表
    List<User> userList = userMapper.selectByCompanyId(companyId); // 企业内部所有用户列表
    if (ydReMeetingUserList == null) {
        return userList;
    }
    if (userList == null) {
        throw new ErrorException(ErrorException.CHECK_ERROR, "您好,没有找到该组织的成员信息!");
    }
    userList.removeIf(a -> {
        return ydReMeetingUserList.stream().anyMatch(b -> {
            if (b.getUserId() != null && b.getUserId().equals(a.getId())) {
                return true;
            } else {
                return false;
            }
        });
    });
    return userList;
}

《java lambda表达式,从一个列表list中删除存在于另外一个列表list的数据对象》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注