为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 Arraylist 转换为 2D 双[][] 数组

如何将 Arraylist 转换为 2D 双[][] 数组

慕姐8265434 2022-08-17 12:14:15
我有一个具有s的对象,它们是x和y:ArrayListCoordArrayList<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数组的形式提取这个x和y。就像double[][]double[][] vector={{0,0},{1,1},{2,2}}我试过这个代码:for (Coords value : positionsArrayList) {    positions = new double[][]{{value.x, value.y}};}但它确实只输入最后一个条目。Java新手请帮忙
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

声明:

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

每次重新分配引用。最后,将“指向”(包含)最后一个元组,这就是为什么你把它看作是结果。positions


查看完整回答
反对 回复 2022-08-17
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以做的是使用传统的 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();

}


查看完整回答
反对 回复 2022-08-17
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

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


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


查看完整回答
反对 回复 2022-08-17
  • 3 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信