Java 如何转换数组中的嵌套ArrayList?

Java 如何转换数组中的嵌套ArrayList?,java,arrays,arraylist,Java,Arrays,Arraylist,我必须将ArrayList中的ArrayList转换为Array List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>(centers.size()); 但这些不会转换嵌套零件。据我所知,现在是数组列表。那么,是否可以从嵌套的ArrayList中获取数组?您可以使用flatMap: List<List<TockaXY>> clustersPorazdeljeni = ne

我必须将ArrayList中的ArrayList转换为Array

List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>(centers.size());
但这些不会转换嵌套零件。据我所知,现在是数组列表。那么,是否可以从嵌套的ArrayList中获取数组?

您可以使用flatMap:

List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();
TockaXY[] flattened = clustersPorazdeljeni.stream()
        .flatMap(x -> x.stream())
        .toArray(x -> new TockaXY[0]);
List clustersPorazdeljeni=new ArrayList();
TockaXY[]flatted=clustersPorazdeljeni.stream()
.flatMap(x->x.stream())
.toArray(x->new TockaXY[0]);

可以使用Java
流和:

List clustersPorazdeljeni=new ArrayList();
TockaXY[]strings=clustersPorazdeljeni.stream()
.flatMap(集合::流)
.toArray(TockaXY[]::新的);

flatMap()有线性替代方案:

请阅读:。回答你的问题:是的,这是可能的。
List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();
TockaXY[] flattened = clustersPorazdeljeni.stream()
        .flatMap(x -> x.stream())
        .toArray(x -> new TockaXY[0]);
List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();

TockaXY[] strings = clustersPorazdeljeni.stream()
    .flatMap(Collection::stream)
    .toArray(TockaXY[]::new);
    List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();

    List<TockaXY> flatArray = new ArrayList<>();
    clustersPorazdeljeni.forEach(flatArray::addAll);
    TockaXY[] arrayOfClusters = flatArray.toArray(new TockaXY[0]);
TockaXY[] arrayOfClusters = clustersPorazdeljeni.stream().flatMap(Collection::stream).toArray(TockaXY[]::new);