将 List<List<Integer>> 转换为 2D 字符数组?

我有一个List<List<Integer>> arrwhich is 2D_INTEGER_ARRAY。我需要将其转换为二维char[][]数组。我尝试使用下面的代码,但它给出了编译问题,这很明显但无法弄清楚我该怎么做?


   public static int largestMatrix(List<List<Integer>> arr) {

    char[][] matrix = new char[arr.size()][];

    for (int i = 0; i < arr.size(); i++) {

        List<Integer> row = arr.get(i);

        // below line is giving error

        matrix[i] = row.toArray(new char[row.size()]);

    }

   }

错误是:


[Java] The method toArray(T[]) in the type List<Integer> is not applicable for the arguments (char[])


Qyouu
浏览 209回答 3
3回答

繁花如伊

Integer并且char是单独的类型。如果您想要将整数表示为数字,则需要对其进行转换(强制转换只会为您提供 ASCII 表示)。此外,您不能toArray()使用原始数组进行调用。您必须手动迭代和转换:matrix[i] = new char[row.size()];for (int j = 0; j < row.size(); j++) {&nbsp; &nbsp; matrix[i][j] = Character.forDigit(row.get(j), 10);}

HUH函数

基本上你正在尝试转换List<Integer>为char[]这一行:matrix[i]&nbsp;=&nbsp;row.toArray(new&nbsp;char[row.size()]);你可以这样做:matrix[i]&nbsp;=&nbsp;row.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(j&nbsp;->&nbsp;Integer.toString(j)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.joining()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toCharArray();

江户川乱折腾

我们可以完全使用 java-8 流来做到这一点,如下所示,我从Kartik 的Integer关于 Stream of到 Stream of转换的答案中得到了启示char[]:List<List<Integer>>&nbsp;list&nbsp;=&nbsp;Arrays.asList(Arrays.asList(1,2,3),&nbsp;Arrays.asList(4,5,6),&nbsp;Arrays.asList(7,8,9));char[][]&nbsp;chars&nbsp;=&nbsp;list.stream().map(l&nbsp;->&nbsp;l.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(&nbsp;i->&nbsp;Integer.toString(i)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.joining()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toCharArray()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toArray(char[][]::new);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java