2017-02-16 49 views
0

我有Stream<SortedSet<String>>,我想只有一個Stream<String>。我嘗試使用flatMap(),但它不起作用,因爲它無法平整Sortedset流。如何使用Stream.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)); 

回答

3

從那些你需要壓扁集合對象的集合的流中獲得的所有對象的流。任何集合可轉變到流:

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