[英]Creating nested collection of objects with parent-child structure using Java Streams API?
我有兩個簡單的類 Order 和 Item。 每個訂單都包含項目列表。 如何使用 Java 流創建訂單列表?
命令:
public Order(String name, int id, ArrayList<Item> items) {
super();
this.name = name;
this.id = id;
this.items = items;
}
物品
public Item(String name, int id, double price, boolean active) {
super();
this.name = name;
this.id = id;
this.price = price;
this.active = active;
}
name
字段的格式應為 go 如下所示: Order 3
。 name
字段的格式應為 go 如下所示: Item 4 of Order 3
這是我蹩腳的嘗試:
ArrayList<Order> or = IntStream.rangeClosed(1,NUMBER_OF_ORDERS).boxed()
.map(idOrder ->
new Order("Orderd " + idOrder.toString(), idOrder,
IntStream.rangeClosed(1,NUMBER_OF_ITEMS_PER_ORDER).boxed()
.map(idItem -> new Item("Item " + idItem, idItem, 100,
true))
.collect(Collectors .toCollection(ArrayList::new)))
.collect(Collectors.toCollection(ArrayList::new))));
我收到一個錯誤。 我的想法是調用 Stream 代替 Order 構造函數中的第三個參數,以返回 ArrayList 的項目,然后再次將所有 Order 對象包裝在一個列表中,但進展不順利......
我想我明白了。 我剛剛在適當的地方設置了collect
。 但是,如果有人有更好的想法,最好在這里發布。 干杯!
List<Order> or = IntStream.rangeClosed(1, NUMBER_OF_ORDERS).boxed()
.map(idOrder ->
new Order("Orderd " + idOrder, idOrder,
IntStream.rangeClosed(1, NUMBER_OF_ITEMS_PER_ORDER)
.mapToObj(idItem -> new Item("Item " + idItem + " of Order " + idOrder, 100, true))
.collect(Collectors.toCollection(ArrayList::new)))
).collect(Collectors.toList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.