簡體   English   中英

如何將Arraylist轉換為二維double [] []數組

[英]How to convert Arraylist into 2D double[][] array

我有一個ArrayList ,其中包含Coord的對象是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);
    }
}

現在,我要以2D數組double[][]形式提取此x和y。 就像

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

我已經試過這段代碼:

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

但是它僅輸入最后一個條目。 Java新手請幫忙

該聲明:

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

每次都重新分配參考。 最后, positions將“指向”(包含)最后一個元組,這就是為什么您將其視為結果。

您可以為每個索引分配每個坐標值,例如:

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);

您可以做的是使用傳統的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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM