[英]Convert List of ArrayList of Objects into Object [][]
Do anyone have an idea how to convert 2 dimension List: 有谁知道如何转换二维列表:
private List<ArrayList<Object>> data = new ArrayList<ArrayList<Object>>();
into array: Object [][] data;
放入数组: Object [][] data;
? ? I noticed that data.asList( new Object[i][j]
); 我注意到data.asList( new Object[i][j]
); is returning only 1 dimension like T[]
. 只返回1维,如T[]
。 Of course j dimension is always constant. 当然,j维始终是恒定的。
You could use a for loop and call toArray()
for each inner list. 您可以使用for循环并为每个内部列表调用toArray()
。
Object[][] arr = new Object[data.size()][];
int i = 0;
for(ArrayList<Object> list : data){
arr[i++] = list.toArray();
}
With java-8 , you could map each inner list to an array and then construct the resulting array: 使用java-8 ,您可以将每个内部列表映射到一个数组,然后构造结果数组:
Object[][] arr = data.stream().map(List::toArray).toArray(Object[][]::new);
As far as I know, you have to loop over all the arrays in the list like this: 据我所知,您必须像这样遍历列表中的所有数组:
Object[][] objs = new Object[data.size()][];
for(int i= 0; i < data.size(); i++)
objs[i] = data.get(i).toArray();
What about using Java8's streams ? 使用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][]);
Here is whole Main method with some example data 这是带有一些示例数据的整个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][]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.