使用流将嵌套的整数列表转换为二维数组(List <List <Integer >>-> int [] [])

时间:2019-10-04 01:36:57

标签: java java-8 java-stream

我搜索了类似的问题,但只找到了不适用于这种情况的对象String:

想使用流将List<List<Integer>> list转换为int[][] array

到目前为止,我知道了:

int[][] array= list.stream().map(List::toArray)...

我以发现的其他类似问题作为基础。但是这些使用字符串,并且不能使它适用于Integers-> int:

// Example with String 1:    
String[][] array = list.stream()
        .map(l -> l.stream().toArray(String[]::new))
        .toArray(String[][]::new);

// Example with String 2:    
    final List<List<String>> list = ...;
    final String[][] array = list.stream().map(List::toArray).toArray(String[][]::new);

1 个答案:

答案 0 :(得分:2)

您只需要对String[][]解决方案进行一些修改:

List<List<Integer>> lists = ...;
int[][] arrays = lists.stream()                                // Stream<List<Integer>>
        .map(list -> list.stream().mapToInt(i -> i).toArray()) // Stream<int[]>
        .toArray(int[][]::new);

mapToInt(i -> i)将每个Integer拆箱(即Integerint)。

请参阅: