Java中如何将for循环替换为Stream流实现按部门ID查询员工姓名
Java 8 Stream替换传统for循环实现方案
你可以直接将Checker类中的CheckingNameFromDeptCode方法替换为以下Stream实现,逻辑和原有代码完全一致,无需调整主方法代码:
class Checker{ void CheckingNameFromDeptCode(LinkedList<Employee1> empObj, String deptID) { empObj.stream() // 过滤出部门ID匹配的员工 .filter(emp -> emp.getDeptID().equals(deptID)) // 提取员工姓名 .map(Employee1::getEmpName) // 打印姓名 .forEach(System.out::println); } }
代码说明
- 首先调用集合的
stream()方法将LinkedList转换为Stream流,开启链式处理流程 filter()方法的Lambda表达式等价于原代码中的if判断,仅保留部门ID和输入值相等的员工对象map()方法通过方法引用提取员工的姓名字段,完成对象到字符串的映射forEach()方法遍历最终结果并打印,替代原循环内的打印逻辑
优化建议(可选)
如果需要避免部门ID为空导致的空指针异常,可以将filter的判断条件调整为:
.filter(emp -> deptID.equals(emp.getDeptID()))
这样即使员工对象的部门ID为null,也不会抛出空指针异常,比原有实现健壮性更好。
内容的提问来源于stack exchange,提问作者Souvik Guha
相关产品推荐
相关产品推荐

