繁体   English   中英

如何将String数组的ArrayList转换为2D字符串数组

[英]How to convert an ArrayList of String arrays into a 2D string array

我有一个ArrayList<String[]> array_list
我想将它转换为2D String数组,结果是array_list中的第一个字符串数组在result[0] 另外我想让结果中的第一个字符串等于字符串equal
即如果array_list中的第一个数组有["A","B","C"]并且我的字符串equal "D"我的result[0]应该是["D","A","B","C"]

我试过了:

ArrayList<String[]> result = new ArrayList<String[]>();
// I'm getting value of result from a function
String[][] array = new String[result.size()][]; 
int j =0;
for (String[] arrs : result)
{
    System.out.println(j);
    String arr = n;//I have taken n as parameter for the function
    array[j][0] = arr;
    int i =1;
    for(String o : arrs)
    {
        array[j][i] = o;
        i++;
    }
    j++;
}

但这会产生java.lang.NullPointerException

array[j]永远不会被初始化。 在使用之前,必须首先将String[]实例分配给array[j]

在外部for循环的开头添加以下行(在array[j][0] = arr ):

array[j] = new String[arrs.length + 1];

这是一个替代方案(标题中的问题)。

我最初的想法是做以下事情;

String[][] array = (String[][]) result.toArray()

但事实证明,给出一个令人讨厌的ClassCastException告诉我们不能将Object数组转换为String数组。

所以,这就是Arrays类( java.util.Arrays )派上用场的地方。

String[][] array = Arrays.copyOf(result.toArray(), result.toArray().length, String[][].class);

或者花哨的Java 8;

String[][] array = Arrays.stream(result.toArray()).toArray(String[][]::new);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM