使用lambda运算符java 8从嵌套列表中获取值

时间:2016-08-30 10:36:38

标签: java lambda java-8

我有一个订单实体,其中包含项目列表,从中我需要循环订单列表,每个订单包含项目列表,我需要从项目中提取项目我需要提取单个项目数量 这是我的代码

public class order{
    private Integer orderId;
    private String orderNo;
    .
    .
    private List<item> items;
    .
    .
    .
}

public class item{
    private Integer itemId;
    private String itemCode;
    private String itemDescription;
    private BigDecimal cost;
    .
    .
    .
}

如何在java8中迭代这个?

2 个答案:

答案 0 :(得分:2)

如果你有:

List<Order> list = ...

你可以.flatMap() ItemList<Item> allItems = list.stream() .map(Order::getItems) .flatMap(List::stream) .distinct() .collect(Collectors.toList()); 个对象的嵌套列表:

android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(getColor(R.color.colorVelocity)));   **//<<Error NullPointerException**

答案 1 :(得分:1)

你的解释令人困惑。

如果你有一个单独的订单,你需要循环的项目,这很容易:

Order singleOrder;

singleOrder.getItems().stream()
    .//whatever else you need;

如果你有一份订单清单,它仍然非常简单:

List<Order> multipleOrders;

multipleOrders.stream()
    .map(Order::getItems)
    .flatMap(List::stream)
    .//whatever else you need