Соответствие Java Hamcrest эквивалентно операции объединения SQL - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть 2 списка, содержащие объекты, например: list1 имеет объект person человек имеет следующие атрибуты: имя, идентификатор, адрес

list2 имеет объект сотрудник Сотрудник имеет следующие атрибуты: orgId, id, зарплата

идентификатор сотрудника равен идентификатору лично.

Я пытаюсь отфильтровать / получить всех сотрудников, чье имя любое из ['john', 'wick', 'tom']

Это легко выполнимо, если я работал с операторами SQL, но есть ли эквивалент для этого в Java hamcrest или других средствах сопоставления?

Я застрял на следующей строке.

List selected = select(
                      list2,
                      having(
                            on(Employee.class).getId(),
                            equalTo("")
                      )
                );

1 Ответ

0 голосов
/ 05 сентября 2018

Больше, чем сопоставление, вы можете использовать потоки и предикаты:

List<Person> selected = list1.stream()
    .filter(person -> list2.stream().anyMatch(employee -> employee.getId().equals(person.getId())))
    .collect(toList());
...