我正在为我的游戏创建一个地图系统,这需要我在几个阶段用另一个替换旧的2D阵列地图。我想要做的是将所有2D arraylist地图添加到这些2D arraylists的列表中。但是,我发现很困难的是,当我想要检索所述地图时,.get方法不会给我正确的数据,因为你会尝试拉出该arraylist的第一项,在这种情况下将为null。因此,该计划让我无效。
private int[][] mapArray;
private List<int[][]> maps = new ArrayList<>();
mapArray = new int[][]{
{0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 9, 1, 1, 7, 7, 7, 7, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{7, 7, 7, 7, 5, 8, 8, 8, 4, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{4, 4, 4, 4, 4, 8, 8, 8, 4, 4, 6, 7, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{4, 4, 4, 4, 4, 8, 8, 8, 4, 4, 4, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
maps.add(mapArray);
当我sout maps.get(0)时,我得到以下内容:
[[I@58838f3f
如果我有两个项目,它将显示如下:
[[[I@58838f3f, [[I@59a60155]
理想情况下,我希望它像这样添加:
[I@58838f3f, I@58838f3f]
我只是不确定如何做到这一点。任何帮助将不胜感激! 我可能忽略了一些显而易见的事情,可能就是这样!
非常有责任
答案 0 :(得分:0)
您似乎混淆了将地图(或地图列表)转换为字符串的输出(当您尝试打印时会发生这种情况) - 具有实际值。
因为大多数Java容器格式的ArrayList
具有很好的toString()
实现,在尝试打印时会自动调用它们,所以你会得到一些&#34;看起来像一个数组&#34 ;在输出中。因此,例如,在打印包含两个字符串的数组列表时,它可能如下所示:[a, b]
。
Arrays没有这么好的格式化程序,因为它们不是真正的对象(它们是&#34;原始类型&#34;)因此打印它们会获得它们的地址和一些Java字节代码描述了它们的类型(如果你能理解Java字节代码),那么整数数组将如下所示:[I@<address>
而二维字节数组将如下所示:[[B@<address>
,依此类推。
关于您的原始问题,代码似乎对我有用。这是一个示例程序:
import java.util.ArrayList;
public class Test2D {
public static void main(String... args) {
ArrayList<int[][]> maps = new ArrayList<>();
maps.add(new int[][] {
{1,2,3},
{4,5,6},
{7,8,9},
});
maps.add(new int[][] {
{10,20,30},
{40,50,60},
});
int[][] map = maps.get(0);
System.out.println(map[0][0]);
}
}
输出将正确打印1
,表明没有空指针异常。