簡體   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