【问题标题】: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 StreamStream::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);
      

      【讨论】:

        猜你喜欢
        • 2021-02-13
        • 2020-01-10
        • 1970-01-01
        • 2018-06-06
        • 1970-01-01
        • 1970-01-01
        • 2022-11-17
        • 2015-05-28
        • 1970-01-01
        相关资源
        最近更新 更多