Middle
21
Какие объекты можно добавлять в set? Какие условия на элементы?
Companies where asked
Answer from AI
sobes.tech AI
В множество (set) можно добавлять любые объекты, при условии, что они корректно реализуют методы equals() и hashCode(). Это необходимо для правильного определения уникальности элементов в множестве.
Условия на элементы:
- Объекты должны быть неизменяемыми или не изменять поля, участвующие в вычислении
hashCode()иequals(), пока находятся в множестве. Иначе это нарушит целостность множества. - Для пользовательских классов рекомендуется переопределять
equals()иhashCode()так, чтобы они отражали логику уникальности объекта.
Пример:
class Person {
private final String id;
private final String name;
public Person(String id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return id.equals(person.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
}
Set<Person> set = new HashSet<>();
set.add(new Person("123", "Alice"));
Таким образом, множество гарантирует уникальность элементов на основе их equals() и hashCode().