![](/img/trans.png)
[英]How do I convert an ArrayList of string arrays to a 2D string array?
[英]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.