簡體   English   中英

將對象的ArrayList的列表轉換為對象[] []

[英]Convert List of ArrayList of Objects into Object [][]

有誰知道如何轉換二維列表:

private List<ArrayList<Object>> data = new ArrayList<ArrayList<Object>>();

放入數組: Object [][] data; 我注意到data.asList( new Object[i][j] ); 只返回1維,如T[] 當然,j維始終是恆定的。

您可以使用for循環並為每個內部列表調用toArray()

Object[][] arr = new Object[data.size()][];
int i = 0;
for(ArrayList<Object> list : data){
    arr[i++] = list.toArray();
}

使用 ,您可以將每個內部列表映射到一個數組,然后構造結果數組:

Object[][] arr = data.stream().map(List::toArray).toArray(Object[][]::new);

據我所知,您必須像這樣遍歷列表中的所有數組:

Object[][] objs = new Object[data.size()][];
for(int i= 0; i < data.size(); i++)
    objs[i] = data.get(i).toArray();

使用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][]);
  1. 流-執行類似迭代器的操作並遍歷所有元素(所有列表)
  2. map-將元素(列表)傳輸到所需的內容(Array [])。 雖然可以流式傳輸List,但您可以執行相同的操作,但是可以使用Arrays
  3. toArray-您傳輸流並將其完成。

這是帶有一些示例數據的整個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM