【问题标题】:How to convert nested ArrayList in Array?如何在数组中转换嵌套的 ArrayList?
【发布时间】:2019-09-08 18:39:26
【问题描述】:
我必须将 ArrayList 的 ArrayList 转换为 Array。
List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>(centers.size());
我知道可以将单个 ArrayList 转换为类似数组
TockaXY[] arrayOfClusters = clustersPorazdeljeni.toArray(new TockaXY[centers.size()]);
但是这些不会转换嵌套部分。据我了解,现在是 ArrayLists 数组。那么是否有可能从嵌套的 ArrayLists 中得到一个 Array 呢?
【问题讨论】:
标签:
java
arrays
arraylist
【解决方案1】:
你可以使用flatMap:
List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();
TockaXY[] flattened = clustersPorazdeljeni.stream()
.flatMap(x -> x.stream())
.toArray(x -> new TockaXY[0]);
【解决方案2】:
可以使用 Java Stream 和 Stream::flatMap :
List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();
TockaXY[] strings = clustersPorazdeljeni.stream()
.flatMap(Collection::stream)
.toArray(TockaXY[]::new);
【解决方案3】:
flatMap() 有线性替代方案:
List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();
List<TockaXY> flatArray = new ArrayList<>();
clustersPorazdeljeni.forEach(flatArray::addAll);
TockaXY[] arrayOfClusters = flatArray.toArray(new TockaXY[0]);
或者使用 flatMap:
TockaXY[] arrayOfClusters = clustersPorazdeljeni.stream().flatMap(Collection::stream).toArray(TockaXY[]::new);