按位置搜索列表中的点

时间:2015-11-17 16:28:31

标签: java list contains point

我遇到以下问题:我正在使用看起来像这样的点数列表

List<Point> list = new ArrayList<Point>();

现在我试图通过他的坐标检查一个新点是否已经是列表的成员和它的前一个邻居。

if ((!list.contains(point)) && list.contains(point.getX() - 1)) {
......
}

现在的问题是这个表达式永远不会成立,虽然我可以清楚地看到,使用调试器,位于其左侧的位置(x-1,y)的点(高度在这里不是很有趣) )在列表中,而点本身不在。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

问题在于list.contains(point.getX() - 1)。您正在检查是否存在整数而不是Point对象。这是因为ArrayList#contains()采用Object参数 - 编译器将整数视为一个对象并且对它很好。

您需要显式传递Point实例,例如:

Point neighborPoint = new Point(point.getX() - 1, point.getY());

if (!list.contains(point) && list.contains(neighborPoint)) {
   ...