我的主要问题是返回的contains()方法ArrayList始终为false,但我不确定为什么。
我创建了一个,ArrayList<Position>名为allValidPositions,其中包含我的自定义类的许多实例Position。
当我尝试在中找到特定Position元素时ArrayList,它总是返回false。
// The parameters represent X and Y coordinates
Position positionToCheck = new Position(0, 0);
if (allValidPositions.contains(positionToCheck) {
System.out.println("Found");
} else {
System.out.println("Not found");
}
Run Code Online (Sandbox Code Playgroud)
Not found尽管我知道有一个Position应该是同一对象(对象中的字段和值相同),但它始终会打印。
contains()方法取决于equals()列表中包含的对象的方法。在这种情况下,请确保您已equals()在Position类中正确重写了方法。
如何
contains()运作?
它拾取列表中的每个对象,并尝试将其与调用equals()方法传递的对象等同。只有equals()被正确覆盖,您才可以检查逻辑相等性。否则,只有true通过相同的引用,它才会返回。
编辑:
根据@AselS的评论,contains()取决于indexOf()哪个调用equals()。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |