【问题标题】:Parsing a list out of lists using Java Streams使用 Java Streams 从列表中解析列表
【发布时间】:2018-06-21 07:10:18
【问题描述】:

我有一份产品清单。每个产品都有另一个成分列表。 如何使用 Streams 来获取所有产品的所有成分列表?

products.stream()
        .map(Product::getIngredients())
        .filter(i -> !i.isEmpty())
        .distinct()
        .collect(Collectors.toList());

就我得到的代码而言,到目前为止,我只是得到一个带有子列表的列表......

这样做的正确方法是什么?

非常感谢!

【问题讨论】:

标签: java list java-stream collectors


【解决方案1】:

只需使用flatMap

products.stream()
        .flatMap(product -> product.getIngredients().stream())
        .distinct()
        .collect(Collectors.toList());

【讨论】:

  • 那必须是.flatMap(product -> product.getIngredients().stream())
  • .map(Product::getIngredients).flatMap(List::stream)
  • @SchiduLuca 顺便说一句,您需要明确告诉 OP distinct 需要覆盖哈希码/等于...您不知道这是否是一个选项。否则加一
  • @Eugene 也许值得一提,但它与问题或答案完全无关。
猜你喜欢
  • 2022-01-22
  • 2017-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多