Назад к задачам
Junior — Senior
4

Отбор уникальных Person по сочетанию имени и отчества

Компании, где спрашивали:

СБЕРСБЕР
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо реализовать функцию unique, получающую список объектов класса Person и возвращающую коллекцию, в которой присутствуют только уникальные записи. Уникальность определяется парой полей firstName (имя) и patronymicName (отчество); значения id и secondName при этом игнорируются.

Требования:

  • Если в исходном списке несколько объектов с одинаковыми firstName и patronymicName, оставить лишь один произвольный экземпляр.
  • Порядок элементов в результирующей коллекции не обязателен.
  • Для проверки уникальности следует сравнивать только комбинацию firstName и patronymicName.
@Data
@AllArgsConstructor
public static class Person {

        public Integer id;
        public String firstName;
        public String secondName;
        public String patronymicName;
}

@Test
public void test() {
    List<Person> person = new ArrayList<>();
    person.add(new Person(1, "Ivan", "Vasya", "Petr"));
    person.add(new Person(2, "Ivan", "Vasya", "Petr"));
    person.add(new Person(3, "Ivan", "Vasya", "Petr"));
    person.add(new Person(4, "Ivan", "Gupta", "Ivan"));
    person.add(new Person(5, "Petr", "Rama", "Igor"));

    Collection<Person> uniquePerson = unique(person);
    assert uniquePerson.size() == 3;
}

public static Collection<Person> unique(List<Person> persons){

}