繁体   English   中英

如何在Java中创建一个不规则形状的二维数组

[英]How to create an irregular shaped two dimensional array in Java

我需要为纸牌游戏创建一个二维数组,如下图所示。 该数组共有 5 行,前两行每行包含 5 列,底部三行每行包含三列。 最好的方法是创建一个典型的 5x5 方形数组并将 NULL 值放在 6 个空单元格中吗? 或者是否有更复杂的方法来处理形状奇特的二维数组?

Square[][] Board = new Square[5][5];
board[5][5] = NULL;

阵列形状

除了根本不使用数组之外,没有更好的方法。 在任何情况下,您都希望使用访问器函数以某种统一的方式处理数组边界和空槽,而不是依赖于数据结构的每个用户来了解边界和 NULL 条目的可能性。

最好的方法是创建一个典型的 5x5 方形数组并将 NULL 值放在 6 个空单元格中吗?

是的,我认为这将是最直观的解决方案。 请记住,您需要区分空呼叫和空卡单元格,因此不能对两者都使用 null。 这应该不是问题:常量实例Square.EMPTY会有所帮助。

二维数组是这类游戏最好的数据结构。 如果你能想出一种方法来说明边界是什么以及如何很好地迭代板,你会没事的。

或者是否有更复杂的方法来处理形状奇特的二维数组?

我想不出任何。 你可以有

Square[][] board = new Square[MAX][];

board[2] = new Square[MAX];
board[3] = new Square[NOT_MAX];

但是对于长度为NOT_MAX数组,您还需要存储一个偏移量。 它使事情复杂化,并假设模式始终如您所展示的那样简单。 对于中间有间隙的模式,它不起作用。

您可以像这样创建数组:

Square[][] board = new Square[5][];
board[0] = new Square[5];
board[1] = new Square[5];
board[2] = new Square[3];
board[3] = new Square[3];
board[4] = new Square[3];

默认情况下,如果尚未设置值,则 Java 数组包含用户定义类型的null 您应该能够根据需要设置其他条目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM