簡體   English   中英

如何將字符串 arrays 的 ArrayList 轉換為二維字符串數組?

[英]How do I convert an ArrayList of string arrays to a 2D string array?

我有一個ArrayList處理String arrays 的 ArrayList 並且應該返回字符串的二維數組:

public String[][] myFunction() {
    ArrayList<String[]> myArrayList = new ArrayList<String[]>();
    ...
    return myArrayList.toArray(String[][]);
}

哪個不起作用。 轉換為String[][]類型也不起作用:

return (String[][]) myArrayList.toArray();

請注意,我需要String[][]而不是Object[][]

我怎樣才能讓它工作?

可以使用List接口的toArray方法

ArrayList<String[]> myArrayList = new ArrayList<String[]>();

myArrayList.add(new String[] {"A","B","C"});
myArrayList.add(new String[] {"AA","BB","CC"});

String[][] array = myArrayList.toArray(String[][]::new);
System.out.println(Arrays.deepToString(array));     

印刷

[[A, B, C], [AA, BB, CC]]
        

這是另外兩種方法。 在這兩種情況下,它們都可以在不同長度的 arrays 下正常工作。

這只是簡單地復制列表中的數組。 因此,如果您更改列表中任何數組的內容,則 arrays 的數組也將被更改。

String[][] array = new String[myArrayList.size()][];
for (int i = 0; i < myArrayList.size(); i++) {
    array[i] = myArrayList.get(i);
}

這只是簡單地復制列表中的現有數組,以避免前面描述的問題。

String[][] array = new String[myArrayList.size()][];
for (int i = 0; i < myArrayList.size(); i++) {
    String[] arr = myArrayList.get(i);
    array[i] = Arrays.copyOf(arr, arr.length);
}
    

你可以試試這個

static String[][] listTo2dArray(ArrayList<String[]> arlS) {
    String[][] arr2D = new String[arlS.size()][arlS.get(0).length];
    for(int i =0;i<arlS.size();i++) {
        arr2D[i] = arlS.get(i);
    }
    return arr2D;
}

假設您列出的每一行都有相同數量的元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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