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

求遍历对象列表的Java Stream等效实现代码,不可将studentFinalList设为final

Java Stream 等效实现

首先给出完全对齐原代码逻辑的版本,不需要将studentFinalList定义为final:

import java.util.stream.Collectors;

// 核心实现
List<Student> studentFinalList = StudentList.stream()
    .filter(ep -> {
        if (StringUtils.isBlank(ep.getName()) && ep.getName() == null) {
            return true;
        } else if (StringUtils.isNotBlank(ep.getName()) && !ep.getName().equals("") && ep.getName() != null) {
            return sIdList.contains(ep.getId());
        }
        return false;
    })
    .collect(Collectors.toList());

补充说明

你原代码中的判断条件存在冗余,可以简化后得到更简洁的Stream版本,逻辑完全等价:

  • StringUtils.isBlank() 本身已覆盖name == null、空字符串、全空白字符的判断,原第一个if分支只有name == null时会命中
  • StringUtils.isNotBlank() 本身已覆盖name != null、非空字符串、非全空白字符的判断,原第二个if分支的后两个判断可省略

简化版实现:

List<Student> studentFinalList = StudentList.stream()
    .filter(ep -> ep.getName() == null 
        || (StringUtils.isNotBlank(ep.getName()) && sIdList.contains(ep.getId())))
    .collect(Collectors.toList());

注:上述两个版本都和原逻辑一致,name为空字符串/全空白且不为null的学生不会被加入结果列表。


内容的提问来源于stack exchange,提问作者Tech Travellers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:15:02