java - 如何收集列表中的列表

标签 java sorting collect

我有类 Stores,其中包含项目数组。

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]);

    }

每个商品(商品类)都有不同的数量,我正在向商店添加商品。假设我有 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());

关于java - 如何收集列表中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70052797/

相关文章:

Java stream collect to map with multiple keys

java-8 - java 8 groupingBy 列表列表

Java collect with lambda expression 示例

java - Java中的页面置换算法模拟

java - Android Studio错误: "Method getText() must be called from the UI Thread,当前推断线程是worker

java - Spring中从xml转换为json时如何更改内容?

java - Java 外部排序

C++ 冒泡排序 : Biggest number becomes random

java - Collections.sort 未按预期对 ArrayList 进行排序 [beanshell、Java、JMeter]

java - 使用 TREAT( ... as ... ) 将查询向下转换为子类时出现异常