【问题标题】:Filtering collections with lambdaj使用 lambdaj 过滤集合
【发布时间】:2013-03-06 12:59:55
【问题描述】:

我有两个这样的课程:

public class Order{
    private Integer id;
    private List<Position> positions;
    ...
}

public class Position{
    private Integer id;
    private String content;
    ...
}

现在,我有一个包含订单的列表,并且想要获取所有具有特定内容的职位的订单。目前我是这样做的:

List<Order> orders = ... ;

List<Order> outputOrders = ... ;
for(Order order : orders){
    if(select(order.getPositions(), having(on(Position.class).getContent(),equalTo("Something"))).size() != 0){
        outputOrders.add(order);
    }
}

有没有更好的方法来用 lambdaj 做到这一点?

提前致谢。

【问题讨论】:

    标签: java collections filtering lambdaj


    【解决方案1】:

    这个呢:使用org.hamcrest.Matchers.hasItem

    List<Order> outputOrders =
            filter(having(on(Order.class).getPositions(),
                          hasItem(having(on(Position.class).getContent(),
                                         equalTo("Something")))),
                   orders);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 2022-11-26
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多