繁体   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