我想在推箱子游戏中保存我的玩家角色的步骤。 因此,起初我想用字符的实际位置填充一个由int x和y组成的数组,称为“ pos”。 而且比我想将此数组添加到一个名为“ moves”的数组ArrayList中。
一个玩家位置的数组:
int[] pos = new int [2];
ArrayList适用于所有步骤,玩家在关卡中制作:
Arraylist<Integer[]> moves = new ArrayList<>();
如果“ int []”放在ArrayList的尖括号内,则会出错。
如何将Array pos添加到ArrayList移动中?
答案 0 :(得分:2)
与 int [] 完全兼容。但是 int []!=整数[] ,请在两个地方都使用相同的内容。
int[] pos = new int[2];
ArrayList<int[]> arrayList = new ArrayList<>();
pos[0] = 1;
pos[1] = 2;
arrayList.add(pos);
System.out.println(arrayList.get(0)[0]+ " "+ arrayList.get(0)[1]);
答案 1 :(得分:1)
int
和Integer
是两个不同的东西(很久以前我第一次学习Java时,我也为此感到困惑。
int
是所谓的原始数据类型,这意味着它不是对象。 Integer
是包装器类,基本上是一个类,其唯一目的是包含一个
int
,以便可以将其作为对象来处理。从Java 5开始,有了“自动装箱”功能,这意味着您可以向int
变量分配Integer
值,反之亦然,编译器将对其进行静默处理。这倾向于混淆差异,但仍然存在并且很重要-例如在这种情况下。
因此,如果要将int[]
的实例存储在ArrayList
中,则需要ArrayList<int[]>
,而不是ArrayList<Integer[]>
。
但是,不可能有ArrayList<int>
,因为ArrayList
只能存储对象(通用类型仅适用于编译器),而不能存储原语。
是的,要向列表中添加元素,请使用
Arraylist<int[]> moves = new ArrayList<>();
arrayList.add(pos);
您可能已经在API doc for ArrayList中找到了它-您应该真正学习使用API文档,您将一直需要它来回答诸如此类的问题。
答案 2 :(得分:0)
您还可以创建类(例如Pos),并将x和y设置为属性,并创建构造函数。您可以使arraylist的类型为Pos ArrayList arrayList = new ArrayList <>(); arrayList.add(new Pos(3,2));