如何使用Java Stream的map和reduce对嵌套ArrayList<Integer>求和转int数组
Java Stream 实现代码
实现思路
- 外层
map操作遍历每一个内层ArrayList<Integer>,完成集合到元素和的映射 - 每个内层集合的求和逻辑强制使用
reduce实现:设置初始累加值为0,依次累加集合中所有整数 - 最终将求和后的整数流转换为
int[]类型返回
完整代码
public static int[] res(ArrayList<ArrayList<Integer>> innerNums) { return innerNums.stream() // map操作:将内层集合映射为对应元素和 .map(innerList -> innerList.stream().reduce(0, Integer::sum)) // 转换为基础类型int数组 .mapToInt(Integer::intValue) .toArray(); }
验证说明
以上代码完全满足要求:同时使用了map和reduce操作,输入给定的嵌套集合后,输出结果正好为[-5, 5, -4, -1]的int数组。如果需要先得到[[-5],[5],[-4], [-1]]的中间集合结果,只需将map中的返回值修改为new ArrayList<>(List.of(innerList.stream().reduce(0, Integer::sum)))再收集为List即可。
内容的提问来源于stack exchange,提问作者AetherRemnant
相关产品推荐
相关产品推荐

