我必须将 ArrayList 的 ArrayList 转换为 Array。List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>(centers.size());我知道可以将单个 ArrayList 转换为 Array TockaXY[] arrayOfClusters = clustersPorazdeljeni.toArray(new TockaXY[centers.size()]);但这些不会转换嵌套部分。据我了解,现在是 ArrayList 数组。那么是否可以从嵌套的 ArrayList 中获取 Array?
3 回答

德玛西亚99
TA贡献1770条经验 获得超3个赞
您可以使用平面地图:
List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>(); TockaXY[] flattened = clustersPorazdeljeni.stream() .flatMap(x -> x.stream()) .toArray(x -> new TockaXY[0]);

茅侃侃
TA贡献1842条经验 获得超21个赞
可以使用 JavaStream
和Stream::flatMap
:
List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>(); TockaXY[] strings = clustersPorazdeljeni.stream() .flatMap(Collection::stream) .toArray(TockaXY[]::new);

慕妹3242003
TA贡献1824条经验 获得超6个赞
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);
添加回答
举报
0/150
提交
取消