gpt4 book ai didi

java - 检查列表是否包含对象 - java

转载 作者:行者123 更新时间:2023-11-30 07:08:31 25 4
gpt4 key购买 nike

我正在写图像处理程序,我有一个列表的问题。

我有一个积分列表。

     class Point1{
private int x;
private int y;

Point1(int x,int y)
{
this.x = x;
this.y = y;
}

int getX(){ return this.x; }
int getY() {return this.y; }
}

ArrayList<Point1> list = new ArrayList();

现在,我创建新点,例如 new Point(4,3);我想检查我的列表中是否有一个点具有相同的坐标。问题是

    list.contains(Object a) 

正在检查我的列表中是否有特定对象。如果我把它会工作

    Point1 first = new Point(1,1);  
list.add(first);
list.contains(first) // and this is true

但是:

    Point second = new Point(2,2);
list.add(second);
list.contains(new Point(2,2)); <- false

如何检查?

最佳答案

您需要覆盖 Point 类上的 equals。您的 Point 类必须负责确定另一个 Point 对象是否“等于”当前对象。 ArrayList 将调用 equals 以确定传递给 contains 的对象是否“等于”列表中的任何项目。

如果不覆盖equals,那么Point会继承equals from Object ,这将简单地查看它是否是完全相同的对象。这就是为什么您的第一个代码“有效”的原因,因为您正在重新使用 first。它还解释了为什么您的第二个代码不“工作”,因为您使用了不同的对象。

此外,如果您覆盖 equals,最好也覆盖 hashCode(反之亦然)。

关于java - 检查列表是否包含对象 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com