Java将List<List<T>>转换为数组
首先是不能使用泛型的强制转换,比如这样:String[][] strings = ans.toArray(ss);
,虽然可以通过编译,但是运行会出错;原因在于泛型转换是有条件的,不能从toArray
得到的Object对象直接转换到String,经过多次测试下面这个方法比较靠谱
- 例子(简单易懂)
// 将ans转变为[][]
List<List<String>> ans = new ArrayList<>();
String [][] ss = new String[ans.size()][];
int i = 0;
for (List<String> mm : ans){
ss[i] = mm.toArray(new String[mm.size()]);
i++;
}
- 代码讲解:
- 先创建二维的数组,然后定义二维数组的初始长度,也就是最外层list的大小,因此有:
List<List<String>> list_list_String = new ArrayList<>();
String [][] array_of_String = new String [list_list_String.size()][];
- 随后是将list_list_String中的每一个List<String>展开处理 ,每一个List都使用toArray进行处理
int i = 0;
for (List<String> list_String : list_list_String){
array_of_String[i] = list_String.toArray(new String[list_String.size()]);
i++;
}
- 其实后面的展开处理可以简单一点:将
list_String.toArray(new String[list_String.size()])
写为list_String.toArray(new String[0])
也是没问题的