使用Java Streams从列表中解析列表

时间:2018-01-11 21:07:53

标签: java list java-stream collectors

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

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

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

正确的方法是什么?

非常感谢!

1 个答案:

答案 0 :(得分:6)

只需使用flatMap

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