Я создал свой собственный класс с методом переопределенных равных, который просто проверяет, являются ли имена (атрибуты в классе) равными. Теперь я храню некоторые экземпляры этого класса в HashSet, чтобы в HashSet не было экземпляров с одинаковыми именами.Java HashSet содержит объект
Вопрос: Как проверить, содержит ли 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
}
К сожалению, мои английские навыки не очень хорошо. Пожалуйста, не стесняйтесь спрашивать, если вы не понимаете, что я имею в виду.
Вы должны переопределить 'hashCode()' при переопределении 'equals()'. –
Я знаю, но это не мой вопрос. – stonar96
Это звучит скорее как плохой дизайн, который нужно решить, чем конкретная реализация. –