我有一个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[])
3 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
Integer并且char是单独的类型。如果您想要将整数表示为数字,则需要对其进行转换(强制转换只会为您提供 ASCII 表示)。此外,您不能toArray()使用原始数组进行调用。您必须手动迭代和转换:
matrix[i] = new char[row.size()];
for (int j = 0; j < row.size(); j++) {
matrix[i][j] = Character.forDigit(row.get(j), 10);
}
HUH函数
TA贡献1836条经验 获得超4个赞
基本上你正在尝试转换List<Integer>
为char[]
这一行:
matrix[i] = row.toArray(new char[row.size()]);
你可以这样做:
matrix[i] = row.stream() .map(j -> Integer.toString(j)) .collect(Collectors.joining()) .toCharArray();
江户川乱折腾
TA贡献1851条经验 获得超5个赞
我们可以完全使用 java-8 流来做到这一点,如下所示,我从Kartik 的Integer
关于 Stream of到 Stream of转换的答案中得到了启示char[]
:
List<List<Integer>> list = Arrays.asList(Arrays.asList(1,2,3), Arrays.asList(4,5,6), Arrays.asList(7,8,9));char[][] chars = list.stream().map(l -> l.stream() .map( i-> Integer.toString(i)) .collect(Collectors.joining()) .toCharArray()) .toArray(char[][]::new);
添加回答
举报
0/150
提交
取消