Java Hamcrest匹配器等效于sql连接操作

时间:2018-09-05 20:23:04

标签: java filter matcher hamcrest

我有2个包含对象的列表,例如: list1 有对象人 person具有以下属性: 名称,id,地址

列表2 具有对象employee 员工具有以下属性: orgId,id,薪金

employee中的id等于person中的id。

我正在尝试过滤/获取名称为['john', 'wick', 'tom']中任何一个的所有员工

如果我使用SQL语句,这很容易做到,但是在Java hamcrest或其他匹配器中有与此等效的东西吗?

当我被卡住时,我处于下一行。

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

1 个答案:

答案 0 :(得分:2)

除了匹配器之外,您可能还想使用流和谓词:

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