有人知道如何转换2维列表:
private List<ArrayList<Object>> data = new ArrayList<ArrayList<Object>>();
进入数组:Object [][] data;
?
我注意到data.asList(new Object[i][j]
);只返回像T[]
这样的1维。当然,j维度总是不变的。
答案 0 :(得分:4)
您可以使用for循环并为每个内部列表调用toArray()
。
Object[][] arr = new Object[data.size()][];
int i = 0;
for(ArrayList<Object> list : data){
arr[i++] = list.toArray();
}
使用java-8,您可以将每个内部列表映射到数组,然后构造结果数组:
Object[][] arr = data.stream().map(List::toArray).toArray(Object[][]::new);
答案 1 :(得分:0)
据我所知,你必须循环遍历列表中的所有数组:
Object[][] objs = new Object[data.size()][];
for(int i= 0; i < data.size(); i++)
objs[i] = data.get(i).toArray();
答案 2 :(得分:0)
如何使用Java8的流?
data.stream()
.map(il -> il.stream().toArray(size -> new Integer[size]))
// OR THIS .map(il -> il.toArray(new Integer[0]))
.toArray(size -> new Integer[size][]);
这是包含一些示例数据的整个Main方法
public static void main(String[] args) {
List<List<Integer>> data = new ArrayList<>();
data.add(Arrays.asList(10, 11, 12, 13));
data.add(Arrays.asList(20, 21, 22, 23));
Integer[][] result = data.stream()
.map(il -> il.toArray(new Integer[0]))
.toArray(size -> new Integer[size][]);
}