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

Java 8中如何将二维数组转为List<List<Integer>>及杨辉三角代码补全

Java 8 二维数组转 List<List> 及杨辉三角代码修复

嘿,我来帮你搞定这两个问题,先从你贴的杨辉三角代码说起吧!

你的杨辉三角代码:return 语句该填什么?

首先得指出一个小问题:你当前定义的 Integer[][] a 是 numRows × numRows 的二维数组,但杨辉三角的第 i 行(从0开始数)只有 i+1 个有效元素,剩下的位置都是 null。如果直接转成 List 的话,会把这些 null 也包含进去,这显然不符合题目要求。

方案1:直接处理现有数组(保留你当前的数组定义)

我们可以用 Stream API 过滤掉每行的 null 元素,再收集成 List:

return Arrays.stream(a)
             .map(row -> Arrays.stream(row)
                               .filter(Objects::nonNull) // 过滤掉空值
                               .collect(Collectors.toList()))
             .collect(Collectors.toList());

方案2:优化数组定义(更高效,推荐)

其实你完全可以在初始化数组时,让每行的长度刚好等于该行的元素个数,这样就不会产生多余的 null 了。修改后的完整代码如下:

class Solution {
    public List<List<Integer>> generate(int numRows) {
        Integer[][] a = new Integer[numRows][]; // 只指定行数,列数后续逐个定义
        for(int i=0;i<numRows;i++) {
            a[i] = new Integer[i+1]; // 第i行有i+1个元素
            a[i][0] = 1;
            a[i][i] = 1; // 单独处理首尾的1,不用嵌套循环判断
            for(int j=1;j<i;j++) { // 只处理中间的元素
                a[i][j] = a[i-1][j-1] + a[i-1][j];
            }
        }
        // 这时候直接转换就行,没有多余的null
        return Arrays.stream(a)
                     .map(Arrays::asList)
                     .collect(Collectors.toList());
    }
}

通用问题:Java 8 中如何将二维数组转成 List<List>?

如果你的二维数组每行都是完整的(没有多余的空值),可以用下面两种方式:

方式1:生成固定大小的 List(基于原数组)

Arrays.asList() 返回的 List 是和原数组绑定的,不能添加/删除元素,但好处是无需额外内存开销:

Integer[][] arr = ...; // 你的二维数组
List<List<Integer>> list = Arrays.stream(arr)
                                 .map(Arrays::asList)
                                 .collect(Collectors.toList());

方式2:生成可变的 ArrayList(可修改)

如果需要后续对 List 进行增删操作,可以把每行转成 ArrayList:

Integer[][] arr = ...;
List<List<Integer>> list = Arrays.stream(arr)
                                 .map(row -> new ArrayList<>(Arrays.asList(row)))
                                 .collect(Collectors.toList());

内容的提问来源于stack exchange,提问作者Dhondi Pranav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:32:55