加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用lambdaj过滤集合

发布时间:2020-12-14 19:24:41 所属栏目:Java 来源:网络整理
导读:我有两个类: public class Order{ private Integer id; private ListPosition positions; ...}public class Position{ private Integer id; private String content; ...} 现在,我有一个包含订单的列表,并希望获得具有特定内容的所有订单.目前我这样做: Li
我有两个类:
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有更好的方法吗?

提前致谢.

解决方法

那个怎么样:使用org.hamcrest.Matchers.hasItem?
List<Order> outputOrders =
        filter(having(on(Order.class).getPositions(),hasItem(having(on(Position.class).getContent(),equalTo("Something")))),orders);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读