如何将Java嵌套foreach遍历代码改写为Stream流实现
实现代码
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; // 原有获取lines的逻辑保持不变 List<String> lines = Files2.linesFromFile(ruta); // Stream流改写实现,和原代码逻辑完全等价 List<List<String>> res = lines.stream() .map(line -> Arrays.stream(line.split(",")) .collect(Collectors.toCollection(ArrayList::new))) .collect(Collectors.toCollection(ArrayList::new));
逻辑说明
- 先将
lines列表转为Stream流对象 - 用
map算子处理每一行字符串:按逗号分割为数组后,转为流收集为ArrayList<String>类型的单行结果,和原代码中内层循环新建aux列表的逻辑完全一致 - 最终将所有单行结果收集为外层
ArrayList结构,输出结果和原for循环实现完全相同
如果不需要严格指定集合实现为ArrayList,可以简化收集器写法:
List<List<String>> res = lines.stream() .map(line -> Arrays.stream(line.split(",")).toList()) .toList();
内容的提问来源于stack exchange,提问作者alevidals
相关产品推荐
相关产品推荐

