我有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("")
)
);
答案 0 :(得分:2)
除了匹配器之外,您可能还想使用流和谓词:
List<Person> selected = list1.stream()
.filter(person -> list2.stream().anyMatch(employee -> employee.getId().equals(person.getId())))
.collect(toList());