Java Stream api как вернуть обработанный поток

98
24 декабря 2021, 18:00

Изучаю Java, делаю задачу по stream api, но решение не проходит.

Есть функция принимающая поток строк public static Stream x (Stream >String> value)

Далее поток value разбивается по разделителю, сортируется и преобразуется в Map. Вопрос: return функции должен возвращать поток, но как вернуть значение преобразованного потока, ведь после терминальной операции он исчезает ?

Answer 1

После выполнения терминальной операции поток закрывается и больше не может быть переиспользован. Все промежуточные результаты лучше хранить в коллекциях. Но если так уж необходимо иметь стрим и применять к нему разные терминальные операции, то можно воспользоваться Supplier'ом, умеющим возвращать требуемый Stream.

public static void main(String[] args) {
    String[] values = {"c,b,a", "f,e,d", "i,h,g"};
    Supplier<Stream<String>> resultStreamSupplier = () -> fun(values, ",");
    System.out.println("1) Count: " + resultStreamSupplier.get().count());
    System.out.println("2) Joining: " + resultStreamSupplier.get().collect(Collectors.joining()));
    System.out.println("3) Map: " + resultStreamSupplier.get().collect(Collectors.toMap(s -> s, String::toUpperCase)));
}
public static Stream<String> fun(String[] values, String splitter) {
    return Stream.of(values).flatMap(str -> Arrays.stream(str.split(splitter))).sorted();
}
READ ALSO
Наследование java [дубликат]

Наследование java [дубликат]

Объясните пожалуйста для чего это, если мы создали класс Animal, потом Cat extends Animal, для чего создают объекты вида Animal barsik = new Cat(); если могли просто...

112
сохранение в Json

сохранение в Json

мне нужно сохранить файл в формате Json, чтобы потом при открытии я мог использовать данные которые сохранил, желательно сохранить файл в конкретную...

184
ClientServer App Java

ClientServer App Java

Друзья просьба помочь понять почему не компилируется код сервера

110
Понимание: Длина префикса

Понимание: Длина префикса

Всем привет, все никак не могу понять про префикс и суффикс каждого индекса в массиве! Само понимание не приходит и как следствие реализация...

162