如何在列表中收集列表

How to collect a list within a list

我有 class 个包含项目数组的商店。

public class Store extends NamedEntity{

    String webAddress;
    Item[] items;

    public Store(String name, String webAddress, Set<Item> items) {
        super(name);
        this.webAddress = webAddress;
        this.items = items.toArray(new Item[0]);

    }

每件商品(class 件商品)的体积不同,我正在向商店添加商品。假设我有 20 件商品,我将 10 件商品添加到 2 或 3 家不同的商店,我必须根据它们的数量对商店中的这些商品进行分类。

我会这样排序:

List<Item> storedItemsSorted = storedItems.stream()
                .sorted(Comparator.comparing(Item::getVolume))
                .collect(Collectors.toList());

我不知道如何将项目放入此列表 storedItemsSorted。

我尝试过类似的方法,但它不起作用:

List <Item> storedItems = storeList
                .stream()
                .map(s->s.getItems())
                .collect(Collectors.toList());

它说:

Required type: List <Item>

Provided:List <Item[]>

也许您正在寻找 flatMap 而不是 mapflatMap 适用于列表流,并映射到项目流。

List <Item> storedItems = storeList
                .stream()
                .flatMap(s->Arrays.stream(s.getItems()))
                .collect(Collectors.toList());