[英]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.