2015-05-04 193 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);