[英]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.