这里我声明了两个数组列表
ArrayList<Location> possibleMoves = new ArrayList<Location>();
possibleMoves.add(new Location(0, 1));
possibleMoves.add(new Location(1, 0));
ArrayList<Location> possibleMoves1 = new ArrayList<Location>();
possibleMoves1.add(new Location(0, 1));
possibleMoves1.add(new Location(1, 0));
很明显,这两个数组列表是相同的,但是当我运行此检查时,它似乎总是失败。
if(possibleMoves == possibleMoves1){
System.out.println("lol");
}
我也试过这个,但它失败了
assertTrue("Player 1 1st piece could play to the left and down!",
arrayListsEqual(possibleMoves, possibleMoves1));
这是arrayListsEqual
的方法private boolean arrayListsEqual(ArrayList<Location> a, ArrayList<Location> b) {
if (a.size() != b.size()) {
return false;
}
int size = a.size();
boolean thisOneFound = false;
for (int i = 0; i < size; i++) {
thisOneFound = false;
for (int j = 0; j < size; j++) {
if (a.get(i).equals(b.get(j))) {
thisOneFound = true;
break;
}
}
if (!thisOneFound) {
return false;
}
}
return true;
}
答案 0 :(得分:4)
2个问题:
首先:你需要检查&#34; equals&#34;列表方法:
list1.equals(list2).
另外,您需要确保将SAME对象保存在这些列表中(通过使用相同的实例)或实现&#34; equals&#34;和&#34; hashmap&#34; &#34;位置&#34;中的方法类。
一旦完成,它应该有效。
祝你好运:)答案 1 :(得分:0)
请阅读==
和equals
之间的区别。 ==
检查两个引用是否引用相同的实例,而equals
检查是否相等。看看这个question的答案。
答案 2 :(得分:0)
您无法将参考对象与==进行比较,ArrayList不是原始数据类型。