Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换列表<;列表<;整数>&燃气轮机;到2D字符数组?_Java_Algorithm - Fatal编程技术网

Java 转换列表<;列表<;整数>&燃气轮机;到2D字符数组?

Java 转换列表<;列表<;整数>&燃气轮机;到2D字符数组?,java,algorithm,Java,Algorithm,我有一个列表arr,它是2D\u INTEGER\u数组。我需要将其转换为2Dchar[][]array。我尝试了下面的代码,但它给出了编译问题,这是显而易见的,但无法弄清楚我该如何做到这一点 public static int largestMatrix(List<List<Integer>> arr) { char[][] matrix = new char[arr.size()][]; for (int i = 0; i < arr.si

我有一个
列表arr
,它是
2D\u INTEGER\u数组
。我需要将其转换为2D
char[][]
array。我尝试了下面的代码,但它给出了编译问题,这是显而易见的,但无法弄清楚我该如何做到这一点

   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()]);
    }
   }
公共静态整数最大矩阵(列表arr){
字符[][]矩阵=新字符[arr.size()][];
对于(int i=0;i
错误是:

[Java] The method toArray(T[]) in the type List<Integer> is not applicable for the arguments (char[])
[Java]类型列表中的toArray(T[])方法不适用于参数(char[])

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);
}
matrix[i]=新字符[row.size()];
对于(int j=0;j
基本上,您正在尝试将此行中的
列表
转换为
字符[]

matrix[i] = row.toArray(new char[row.size()]);
您可以使用以下方法执行此操作:

matrix[i] = row.stream()
        .map(j -> Integer.toString(j))
        .collect(Collectors.joining())
        .toCharArray();

我们可以纯粹使用java-8流来实现这一点,如下所示,我从关于将
Integer
流转换为
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);
List 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(收集器.joining())
.toCharArray())
.toArray(字符[]]::新建);

错误已被更新。请尝试
新字符[row.size()]
char
是一种基本类型,与泛型不兼容。尽管问题也可能与尝试从
整数
隐式转换为
字符
有关。不知道是哪一种。现在它说“不兼容类型”。错误是:
错误:不兼容的类型矩阵[i]=row.toArray(新字符[row.size()]);^必需:char[]找到:Character[]
当然,将
matrix
定义为
Character[][]
而不是
char[][]
。这里的行是什么?抱歉弄糊涂了,这是你的变量,在循环中。