Java 3d ArrayList与堆栈的ArrayList

Java 3d ArrayList与堆栈的ArrayList,java,arraylist,Java,Arraylist,我正在尝试重新创建一个棋盘游戏。这个棋盘游戏有一个4x4维度,可以用2D arraylist表示。然而,我所面临的困难是,确定实现4x4棋盘游戏的最佳方法是什么,其中每行和每列可以容纳4个项目(以堆栈的方式,顶部项目是最大整数)。在这种情况下,堆栈的2D arraylist是最有效的,还是3D arraylist是最佳选择。类似地,如何初始化整数的3D arraylist?谢谢 无论哪种方式,效率都会很好,做任何你需要用正方形做的最简单的事情。你会用它们的X,Y坐标来引用它们吗?然后,您可能只需

我正在尝试重新创建一个棋盘游戏。这个棋盘游戏有一个4x4维度,可以用2D arraylist表示。然而,我所面临的困难是,确定实现4x4棋盘游戏的最佳方法是什么,其中每行和每列可以容纳4个项目(以堆栈的方式,顶部项目是最大整数)。在这种情况下,堆栈的2D arraylist是最有效的,还是3D arraylist是最佳选择。类似地,如何初始化整数的3D arraylist?谢谢

无论哪种方式,效率都会很好,做任何你需要用正方形做的最简单的事情。你会用它们的X,Y坐标来引用它们吗?然后,您可能只需要使用一个二维的瓷砖阵列,这样您就可以像

tile = board[x][y]
这假设原点位于电路板的左上角。如果这真的是一个问题的话,它也是非常有效的。

你问“…实现4x4棋盘游戏的最佳方法是什么…”。但看起来你现在不应该关心实施。听起来你应该关心界面。定义一个接口,该接口精确反映您想要表示的内容:

interface Board {
    int getNumRows();
    int getNumCols();
    int getStackHeight(int r, int c);
    int getStackValue(int r, int c, int h);
 }

正如前面提到的,效率不应该是一个问题,如果它成为一个问题,当您可以在不影响游戏中其他任何东西的情况下更改实现时,您可能会很高兴

你多长时间读取或更改一次棋盘上单个区域的特定值?@EvcanMustafa玩家可以放置一个大于原始位置的值。例如,如果[0][0]有2,另一个人可以在该点上放3。插槽的最大数量=4,最大int=4。我还需要返回最上面的值和板上的值。为什么板需要那么有效。如果玩家玩游戏——比方说每秒移动一次——你不会注意到这两种实现之间的差异。但是,由于项目的数量是固定的,在这个实现中,一个3d数组应该足够了,如果我在[0][0]处添加一个整数,例如3,然后用4替换它,我不需要另一个数组列表来跟踪这两个整数。为了您自己的理智,只需创建一个可以存储4个整数的
平铺
类。如果你开始在一个数组中遍历二维,那么很难快速读取。