【问题标题】:How to convert Arraylist into 2D double[][] array如何将 Arraylist 转换为 2D double[][] 数组
【发布时间】:2019-03-18 14:25:37
【问题描述】:

我有一个 ArrayList,其中有 Coords 的对象,它们是 x 和 y:

ArrayList<Coords> positionsArrayList = new ArrayList<>(values);

class Coords {
    int x;
    int y;

    public boolean equals(Object o) {
        Coords c = (Coords) o;
        return c.x == x && c.y == y;
    }

    public Coords(int x, int y) {
        super();
        this.x = x;
        this.y = y;
    }

    public int hashCode() {
        return new Integer(x + "0" + y);
    }
}

现在我想以二维数组double[][] 的形式提取这个 x 和 y。 就像

double[][] vector={{0,0},{1,1},{2,2}}

我试过这段代码:

for (Coords value : positionsArrayList) {
    positions = new double[][]{{value.x, value.y}};
}

但它确实只输入最后一个条目。 java新手请帮忙

【问题讨论】:

    标签: java arrays arraylist multidimensional-array


    【解决方案1】:

    声明:

    positions = new double[][]{{value.x, value.y}};
    

    每次都重新分配引用。最后,positions 将“指向”(包含)最后一个元组,这就是您将其视为结果的原因。

    【讨论】:

      【解决方案2】:

      你可以做的是使用传统的for循环来实现结果:

      positions = new double[positionsArrayList.size()][2];
      for(int i =0; i < positionsArrayList.size(); i++){
          positions[i][0] = positionsArrayList.get(i).getX();
          positions[i][1] = positionsArrayList.get(i).getY();
      }
      

      【讨论】:

        【解决方案3】:

        您可以为每个索引分配每个坐标值,例如:

        double[][] positions = new double[positionsArrayList.size()][2];
        
        for (int i = 0; i < positionsArrayList.size(); i++) {
            positions[i][0] = positionsArrayList.get(i).x;
            positions[i][1] = positionsArrayList.get(i).y;
        }
        

        或者如果你熟悉流:

        double[][] positions= positionsArrayList.stream()
                    .map(coords -> new double[]{coords.x, coords.y})
                    .toArray(double[][]::new);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-09
          • 2016-10-10
          • 1970-01-01
          • 1970-01-01
          • 2013-08-14
          • 1970-01-01
          • 2015-09-01
          相关资源
          最近更新 更多