为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Qyouu 2022-06-15 10:45:36
我有一个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);

}


查看完整回答
反对 回复 2022-06-15
?
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();


查看完整回答
反对 回复 2022-06-15
?
江户川乱折腾

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);


查看完整回答
反对 回复 2022-06-15
  • 3 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信