如何用Stream API处理对象数组列表?改写Java循环方法为流式实现
使用Stream API改写后的方法实现
改写后的代码如下:
import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public List<AddNewSchoolBean> getEmployeeList() { try { List<Object[]> empList = Dao.getEmpDetailsFromUserMst(); return empList.stream() .map(obj -> AddNewSchoolBean.builder() .employeeId(obj[0].toString()) .employeeName(obj[1].toString()) .schoolName(obj[2].toString()) .build()) .collect(Collectors.toCollection(ArrayList::new)); } catch (Exception e) { e.printStackTrace(); return new ArrayList<>(); } }
关键改动说明
- 移除了手动创建
ArrayList并循环添加的冗余逻辑,改用Stream的map操作直接将每个Object[]转换为AddNewSchoolBean实例 - 用
collect(Collectors.toCollection(ArrayList::new))收集结果,确保返回ArrayList类型,和原方法的返回类型完全一致;如果对返回的List实现没有严格要求,也可以用更简洁的Collectors.toList() - 原逻辑中
empList.size() != 0的判断可以省略,因为空列表的stream()执行后会直接返回空集合,和原逻辑结果一致 - 异常处理部分保留原有打印堆栈的行为,返回空
ArrayList,和原方法的异常分支逻辑完全对齐
内容的提问来源于stack exchange,提问作者parikshit verma
相关产品推荐
相关产品推荐

