Sobes.tech
Middle
21

Какие объекты можно добавлять в set? Какие условия на элементы?

Companies where asked
OZONOZON

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().