簡體   English   中英

使用 Java 流 API 創建具有父子結構的嵌套對象集合?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM