2017-02-16 3 views
0

У меня есть Stream<SortedSet<String>>, и я хочу иметь только Stream<String>. Я пробовал использовать flatMap(), но это не сработало, так как он не может использовать Flat Stream of 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); 
Смежные вопросы