java - 将嵌套列表转换为二维数组

标签 java multidimensional-array nested-lists

我正在尝试将嵌套列表转换为二维数组。

List<List<String>> list = new ArrayList<>();

list.add(Arrays.asList("a", "b", "c"));
list.add(Arrays.asList("dd"));
list.add(Arrays.asList("eee", "fff"));

我想将其设为 String[][]。我尝试了以下方法:

String[][] array = (String[][]) list.toArray();      // ClassCastException

String[][] array = list.toArray(new String[3][3]);   // ArrayStoreException

String[][] array = (String[][]) list.stream()        // ClassCastException
    .map(sublist -> (String[]) sublist.toArray()).toArray();

有什么方法可以解决吗?请注意,直到运行时我才知道列表的大小,并且它可能是锯齿状的。

最佳答案

你可以这样做:

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

它创建一个 Stream<List<String>>从您的列表列表中,然后从中使用 map 将每个列表替换为字符串数组,结果为 Stream<String[]> , 最后调用 toArray (使用生成器函数,而不是无参数版本)生成 String[][] .

关于java - 将嵌套列表转换为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26726366/

相关文章:

python - 如何使用嵌套列表作为输入?

java - jdk 1.4、1.5、1.6编译代码差异

java - 可以使用 instanceof 运算符来实现两个并行的函数层次结构和它们的参数吗?

php - 如何使用 fputcsv PHP 将多维数组导出到特定的 .csv 布局

python - 增加列表列表的 Pythonic 方式

python - 在整齐的列/表中打印列表列表

java - Android中如何知道光标在哪个edittext中

java - 如何重写一个方法以使其仅返回数字 2? ( java )

python - 在numpy中用3d数组索引2d数组

php - 数组到DB插入PHP MYSQL