【问题标题】:Java Hamcrest matcher equivalent to sql join operationJava Hamcrest 匹配器等价于 sql 连接操作
【发布时间】:2018-09-05 20:23:04
【问题描述】:

我有 2 个包含对象的列表,例如: list1 有对象人 人具有以下属性: 姓名、身份证、地址

list2 有对象员工 员工具有以下属性: orgId、id、薪水

employee 中的 id 与 person 中的 id 相同。

我正在尝试过滤/获取姓名为 ['john', 'wick', 'tom'] 的所有员工

如果我使用 SQL 语句,这很容易实现,但在 Java hamcrest 或其他匹配器中是否有等效的方法?

当我被卡住时,我正在下一行。

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

【问题讨论】:

    标签: java filter matcher hamcrest


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2015-09-15
    相关资源
    最近更新 更多