powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Не вдупляю Stream API
6 сообщений из 6, страница 1 из 1
Не вдупляю Stream API
    #39577910
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу написать метод, которому передаём на вход файл с данными, внутри по записям данные парсим и складываем в Pojo, на выход передаём вычитанные объекты.
FileInputStream >> MyPojo >> Stream
Код: java
1.
public Stream<MyPojo> getMyPojoStream(String dataFileName);


Но не могу ничего предумать кроме как сначала в List считать, затем его в Stream обернуть. Профит от такого подхода не вижу..
Может таки есть способ лучше, чтобы Streaming как бы соответствовал своему названию?
...
Рейтинг: 0 / 0
Не вдупляю Stream API
    #39577919
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, этот момент не самый простой в стримах.
На вскидку что-то вот такое:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
public Stream<MyPojo> load MyPojo () {
        return StreamSupport.stream(new Spliterator<MyPojo>() {
            @Override
            public boolean tryAdvance(Consumer<? super MyPojo> action) {
                if(!dataStreamIsOpen()){
                   openStream();
                }
                if(!dataStreamIsOpen()){
                   MyPojo pj = readNext();
                   if(pj != null) {
                      action.accept(pj) ;
                      return true;
                   } else {
                      closeStream();
                   }
                }
                return false;
            }

            @Override
            public Spliterator<User> trySplit() {
                return null;
            }

            @Override
            public long estimateSize() {
                return total;
            }

            @Override
            public int characteristics() {
                return NONNULL;
            }
        }, false);
    }



Правда, открытие и закрытие InputStream, возможно, стоит вынести наружу. Либо обработку исключений дописать по вкусу.
...
Рейтинг: 0 / 0
Не вдупляю Stream API
    #39577920
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не вдупляю Stream API
    #39577926
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого, как оперативно.. ))
Спасибо, коллеги! Пошел изучать.
С наступающим Новым Годом!
...
Рейтинг: 0 / 0
Не вдупляю Stream API
    #39577930
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mesier,

Там второе условие не правильное. И ресурсы в стримах закрывать, наверное, плохая идея. Они же ленивые. До конца могут и не дочитать. Так что закрытие ресурса полюбому надо наружу выносить. Либо нужно чтобы клиентский код всегда полностью стрим вычитывал.
...
Рейтинг: 0 / 0
Не вдупляю Stream API
    #39577931
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

https://stackoverflow.com/questions/38698182/close-java-8-stream/38698245
У стримов есть метод close(), вот через него и можер ресурсы закрывать.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Не вдупляю Stream API
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]