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

Java:如何制作特定对象的二维数组

Java:如何制作特定对象的二维数组

慕娘9325324 2023-04-26 15:05:42
我在 Java 中有以下类:public class Cell {    private int x;    private int y;    private int g;    private int h;    public Cell(int x, int y, int g, int h) {       this.x = x;       this.y = y;       this.g = g;       this.h = h;    }}我想制作一个二维数组,其中数组的每个元素都是 Cell 类型。但是,我不确定执行此操作的最佳方法是什么。任何见解表示赞赏。
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

Cell[][]这是。但是请注意,这与二维数组略有不同。它实际上是一个一维数组,其元素都具有类型Cell[]。这意味着您的阵列不必是“矩形”。


Cell[][] cells = new Cell[10][10];做你所期望的,并创建一个 10x10 的矩形阵列。


但是,您可以执行以下操作:


Cell[][] cells = new Cell[10][];

cells[0] = new Cell[1];

cells[1] = new Cell[1000];

...


cells[1][5] = 1;  // allowed, since cells[1] is a Cell[] of size 1000

cells[0][5] = 1;  // throws ArrayIndexOutOfBoundsException, since cells[0] has size 1

例如,如果您尝试表示三角形数据结构(例如帕斯卡三角形),这会有所帮助。


查看完整回答
反对 回复 2023-04-26
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

实际上我认为 Array 不会方便,固定大小等。也许在字段中使用带有 Collections 的额外类会更符合 OOP 风格和方便。



class Board {


    List<List<Cell>> hash;


    public Cell getCell(int x, int y) {

        // might be usefull to copy return value for immutability of hash

        return hash.get(x).get(y);

    }


    public void setCell(Cell cell, int x, int y) {

        this.hash.get(x).set(y, cell);

    }



}


查看完整回答
反对 回复 2023-04-26
  • 2 回答
  • 0 关注
  • 96 浏览

添加回答

举报

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