猿问

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

我在 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 类型。但是,我不确定执行此操作的最佳方法是什么。任何见解表示赞赏。


慕娘9325324
浏览 98回答 2
2回答

白衣非少年

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 1000cells[0][5] = 1;  // throws ArrayIndexOutOfBoundsException, since cells[0] has size 1例如,如果您尝试表示三角形数据结构(例如帕斯卡三角形),这会有所帮助。

米琪卡哇伊

实际上我认为 Array 不会方便,固定大小等。也许在字段中使用带有 Collections 的额外类会更符合 OOP 风格和方便。class Board {&nbsp; &nbsp; List<List<Cell>> hash;&nbsp; &nbsp; public Cell getCell(int x, int y) {&nbsp; &nbsp; &nbsp; &nbsp; // might be usefull to copy return value for immutability of hash&nbsp; &nbsp; &nbsp; &nbsp; return hash.get(x).get(y);&nbsp; &nbsp; }&nbsp; &nbsp; public void setCell(Cell cell, int x, int y) {&nbsp; &nbsp; &nbsp; &nbsp; this.hash.get(x).set(y, cell);&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

Java
我要回答