java中是否有任何转换
的快捷方式List<List<String>>
到
String[][]
? toArray不起作用:
List<List<String>> list = new ArrayList<>();
list.add(Collections.singletonList("test"));
String[][] array = list.toArray(new String[0][]);
System.out.println(array);
Exception in thread "main" java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at java.util.Arrays.copyOf(Arrays.java:3213)
at java.util.ArrayList.toArray(ArrayList.java:407)
at main(Api.java:1001)
这不是Convert nested list to 2d array的重复,因为我正在寻找快捷方式/ lib,而不是基本的实现
答案 0 :(得分:4)
这里有一些Java 8 lambda:
// original List<List<String>>
List<List<String>> nestedList = new ArrayList<>();
// adding test values
nestedList.add(new ArrayList<String>(){{add("a");add("b");}});
nestedList.add(new ArrayList<String>(){{add("c");add("c");}});
nestedList.add(new ArrayList<String>(){{add("e");add("f");}});
// printing the original List<List<String>>
System.out.println(nestedList);
String[][] nestedArray = nestedList
// using the stream API
.stream()
// mapping each `List`...
.map(
// ... to a resulting array
(l) -> l.toArray(new String[l.size()])
)
// collecting as a List<String[]>
.collect(Collectors.toList())
// converting the resulting List<String[]> to a String[][]
.toArray(new String[nestedList.size()][]);
// printing the resulting 2-dimensional array
System.out.println(Arrays.deepToString(nestedArray));
<强>输出强>
[[a, b], [c, c], [e, f]]
[[a, b], [c, c], [e, f]]