2016-08-30 7 views
0

私は注文のリストを含むOrderエンティティを持っています。単独の項目iは、単一の数量 ここに私のコードはラムダ演算子を使用してネストされたリストから値を取得する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

お持ちの場合:

List<Order> list = ... 

あなたがItemオブジェクトのネストされたリスト(複数可).flatMap()できます

List<Item> allItems = list.stream() 
          .map(Order::getItems) 
          .flatMap(List::stream) 
          .distinct() 
          .collect(Collectors.toList()); 
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 
関連する問題