如何使用stream.flatmap()



我有 Stream<SortedSet<String>>,我只想有一个 Stream<String>。我尝试使用flatMap(),但由于无法平面排序集而无法使用。

String productName = "p1";
Set<Product> products = new HashSet<>();
products.add(new Product(productName));
Stream<SortedSet<String>> sortedSetStream = products.stream().map(p -> Util.getProductNames(p) );

从这些对象的集合中获取所有对象的流,您需要将 flatten 收集。任何集合都可以转换为流:

Stream<SortedSet<String>> sortedSetStream = products.stream().map(p -> Util.getProductNames(p) );
Stream<String> ss = sortedSetStream.flatMap( s -> s.stream() );

或(如果您喜欢方法参考):

Stream<String> ss = sortedSetStream.flatMap( Collection::stream );

最新更新