我正在尝试将嵌套列表转换为二维数组。
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/