2015-05-04 194 views
1

我有一个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转换成二维字符串数组

我想:

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

+0

在哪一行是抛出的nullpointerexception? –

回答

3

array[j]从不初始化。在使用之前,您必须先将String[]实例分配给array[j]

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

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

工作感谢 – SidSel

+0

@SSelSel如果答案解决了您的问题,您应该考虑[接受它](http://meta.stackexchange.com/a/5235/186652)。 – Pshemo

0

这里是一个替代(在标题你的问题)。

我最初的想法是做以下工作;

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);