Zer*_*ero 1 java arrays integer multidimensional-array
我正在编写一种方法,它将Integer数据类型从 a Listof Lists 转换为原始数组数组 type int[][]。
题
有没有办法转换Integer为int使用Java API?
供您参考,int[] set将用于其他目的,所以请忽略。
我发现了什么
Apache Commons API“toPrimitive”方法将整数转换为整数类型。但是,我只是在寻找使用本机 java API 的解决方案。
到目前为止,这是我的代码
class Test {
int[][] convert(int[] set) {
List<List<Integer>> ll = new ArrayList<List<Integer>>();
ll.add(new ArrayList<Integer>());
ll.add(new ArrayList<Integer>());
ll.add(new ArrayList<Integer>());
ll.get(0).add(1);
ll.get(0).add(2);
ll.get(1).add(2);
ll.get(2).add(3);
System.out.println(ll + " " + ll.size());
int[][] tempArray = new int[0][0];
for (int i = 0; i < ll.size(); i++) {
for (int j = 0; j < ll.get(i).size(); j++) {
tempArray[i][j] = ll.get(j);
}
}
return tempArray;
}
}
Run Code Online (Sandbox Code Playgroud)
预期成绩
List entry: [[1,2],[2],[3]]
return: {{1,2},{2},{3}}
Run Code Online (Sandbox Code Playgroud)
错误
tempArray[i][j] = ll.get(j);
返回java.util.List<java.lang.Integer> cannot be converted to int。
要回答您的确切问题,是的 anInteger可以int使用intValue()方法转换为,或者您可以使用自动装箱转换为int.
因此,循环的最里面部分可能是以下任一部分:
tempArray[i][j] = ll.get(i).get(j).intValue();
tempArray[i][j] = ll.get(i).get(j);
Run Code Online (Sandbox Code Playgroud)
但是,我们也可以采取不同的策略。
作为对类似问题的此答案的修改,在 Java 8 中,您可以使用 Streams 映射到整数数组。这种结构只需要一个额外的映射层。
List<List<Integer>> list = new ArrayList<>();
int[][] arr = list.stream()
.map(l -> l.stream().mapToInt(Integer::intValue).toArray())
.toArray(int[][]::new);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3687 次 |
| 最近记录: |