Java 使用lambdaj筛选集合

Java 使用lambdaj筛选集合,java,collections,filtering,lambdaj,Java,Collections,Filtering,Lambdaj,我有两门这样的课: public class Order{ private Integer id; private List<Position> positions; ... } public class Position{ private Integer id; private String content; ... } List<Order> orders = ... ; List<Order> out

我有两门这样的课:

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);
    }
}
公共类秩序{
私有整数id;
私人名单职位;
...
}
公共阶级地位{
私有整数id;
私有字符串内容;
...
}
现在,我有一个订单列表,希望得到所有有特定内容的订单。目前我是这样做的:

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);
    }
}
List orders=;
列出输出顺序=;
对于(订单:订单){
if(选择(order.getPositions(),have(on(Position.class).getContent(),equalTo(“某物”)).size()!=0){
outputOrders.add(订单);
}
}
用lambdaj有更好的方法吗


提前谢谢。

这个怎么样:使用
org.hamcrest.Matchers.hasItem

List<Order> outputOrders =
        filter(having(on(Order.class).getPositions(),
                      hasItem(having(on(Position.class).getContent(),
                                     equalTo("Something")))),
               orders);
列出输出顺序=
过滤器(具有(on)(Order.class).getPositions(),
hasItem(having)(on(Position.class).getContent(),
“某物”),
订单);