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数组
。我需要将其转换为2Dchar[][]
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[][]
。这里的行是什么?抱歉弄糊涂了,这是你的变量,在循环中。