有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java List<List<String>>到String[]

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,而不是一个基本的实现


共 (1) 个答案

  1. # 1 楼答案

    下面是一些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]]