我创建了一个自己的类,并覆盖了equals方法,该方法只检查名称(类中的属性)是否相等。现在,我将该类的一些实例存储在HashSet中,以便HashSet中没有具有相同名称的实例。
我的问题是:如何检查HashSet是否包含这样的对象。 .contains()在这种情况下不起作用,因为它使用.equals()方法。我想检查它是否真的是同一个对象。
编辑:
我的问题是:如何检查HashSet是否包含这样的对象。 .contains()在这种情况下不起作用,因为它使用.equals()方法。我想检查它是否真的是同一个对象。
编辑:
package testprogram;
import java.util.HashSet;
import java.util.Set;
public class Example {
private static final Set<Example> set = new HashSet<Example>();
private final String name;
private int example;
public Example(String name, int example) {
this.name = name;
this.example = example;
set.add(this);
}
public boolean isThisInList() {
return set.contains(this);
//will return true if this is just equal to any instance in the list
//but it should not
//it should return true if the object is really in the list
}
public boolean remove() {
return set.remove(this);
}
//Override equals and hashCode
}
抱歉,我的英语水平不是很好。如果您不理解我的意思,请随时再问。
equals()
方法时,你必须同时重写hashCode()
方法。 - Matt BallhashCode
方法。但是在这种情况下,contains
应该能够找到你的对象。请同时提供任何相关的代码和数据,以便我们可以重现你的问题。 - rgettmanequals
太粗糙了,就将其变得更加精细。或者不覆盖Object.equals
。 - khelwood