powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Stream API
25 сообщений из 174, страница 3 из 7
Stream API
    #39935470
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и я говорю что в стримах по дизайну не должно быть исключений. Исключение разрывает конвейер.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("d-M-[uuuu][uu]");

....

String[] dts = new String[]{"17-12-1980", "20-2-1981", "22-2-1981", "2-4-1981", "28-9-1981", "1-5-1981", 
                "9-6-1981", "13-JUL-87", "17-11-1981", "8-9-1981", "13-JUL-87", "3-12-1981", "3-12-1981", "23-1-1982"};

    static Optional<LocalDate> parseOrEmpty(String d1) {
        try {
            return Optional.of(LocalDate.parse(d1, dateTimeFormatter));
        } catch (DateTimeParseException ex) {
            return Optional.empty();
        }
    }

    List<LocalDate> parsedDates = Arrays.stream(dts).map(Main::parseOrEmpty)
                .filter(Optional::isPresent)
                .map(Optional::get)
                .peek(x -> System.out.println(x))
                .collect(Collectors.toList());



Что делать с двузначной датой? Отдать на откуп техническому заданию и разработчику. Можно логгировать.
Можно игнорить. Можно считать дефектом данных. Но не прерывать процессинг стрима.
...
Рейтинг: 0 / 0
Stream API
    #39935490
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
2.
3.
4.
5.
6.
7.
static Optional<LocalDate> parseOrEmpty(String d1) {
        try {
            return Optional.of(LocalDate.parse(d1, dateTimeFormatter));
        } catch (DateTimeParseException ex) {
            return Optional.empty();
        }
    }


Согласен. Так и получается, что исключения гасить в самом зародыше. Чтобы наружу ни в потоках, ни в стримах не выползали.
...
Рейтинг: 0 / 0
Stream API
    #39935499
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Код: java
1.
2.
3.
4.
5.
6.
7.
static Optional<LocalDate> parseOrEmpty(String d1) {
        try {
            return Optional.of(LocalDate.parse(d1, dateTimeFormatter));
        } catch (DateTimeParseException ex) {
            return Optional.empty();
        }
    }


Согласен. Так и получается, что исключения гасить в самом зародыше. Чтобы наружу ни в потоках, ни в стримах не выползали.

Да. Большинство языков которые создавались после Java (GoLang) отказались от декларации checked exceptions
и вообще постарались не вовлекать программиста в формальный протокол обработки до тех пор пока
ОН САМ не решит это сделать явно. Да и вообще. Если есть возможность например парсить дату
просто возвращая boolean признак - лучше сделать так. Это будет дешевле с точки зрения накладных
расходов на процессинг. Представте что вы парсите CSV-файл из миллиарда строк и в нем в каждой
строке идет генерация DateTimeParseException и внутренняя механика каждый раз (!) формирует
полный стектрейс (Java объект представляющий стектрейс) независимо от того нужен он нам или нет.
По сабжу - не нужен но бох его знает какая механика под капотом уже работает. Софистический
пример с парсингом дат - для меня был самый настоящий. И я фиксил перформанс дефект
как раз для такого случая когда формат даты был задан неверно но деградация производительности
(для JDK 1.6) в то время была так ужасна что выгоднее было сделать строковые проверки
и выйти из процедуры раньше чем отработает метод ::parse().

Вобщем Exception - должен быть редким. Исключительным.
...
Рейтинг: 0 / 0
Stream API
    #39935535
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вобщем Exception - должен быть редким. Исключительным.
для меня только в двух случаях - в стримах и потоках.

mayton
Представте что вы парсите CSV-файл из миллиарда строк и в нем в каждой
строке идет генерация DateTimeParseException и внутренняя механика каждый раз (!) формирует
полный стектрейс (Java объект представляющий стектрейс) независимо от того нужен он нам или нет.

Я при исключении выхожу из стека, на самый верх в ГУИ.
...
Рейтинг: 0 / 0
Stream API
    #39935560
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главное чтоб для пользователя это не выглядело как "циклическое" модальное окно.
Типа выскакиевает лопух с собщением "Unable to parse date XXXX at position Y", пользователь
его внимательно читает. Соглашается. Нажимает ОК. А потом - херак - следующее окно
точно такое-же текстом только дата другая. Далее - у пользователя должен быть сердечный
приступ...
...
Рейтинг: 0 / 0
Stream API
    #39935719
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
На этот раз поддержу Петро, кидать исключения в стриме - противоречит самой концепции стримов. Такое случается когда смузеры начинают осваивать новую технологию не разобравшись для чего она.

никто не бросает исключение в стриме
List -stream- filtr-findfirst-orElseThrow
вот конструкция примерная

и все тут ок
но мне дали задачу сделать похожую концепцию,но исключение должно выброситься в случае если стрим пустой,Причем сделать это в общей концепции -без ифов и без создания доп.объектов
...
Рейтинг: 0 / 0
Stream API
    #39935725
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
никто не бросает исключение в стриме
проснулся после 8 марта))

asv79
List -stream- filtr-findfirst-orElseThrow
вот конструкция примерная

и все тут ок
это Г.. код
...
Рейтинг: 0 / 0
Stream API
    #39935759
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79
никто не бросает исключение в стриме
проснулся после 8 марта))

asv79
List -stream- filtr-findfirst-orElseThrow
вот конструкция примерная

и все тут ок
это Г.. код

аргументы на уровне школьника 3 класса
аргументируй ,чем он говно ,очень хочется экспертное мнение услышать)
...
Рейтинг: 0 / 0
Stream API
    #39935798
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Аргументы тебе школьник, будут когда юз кейс для вопроса по коду будут.
Или научишься Модель представлять для вопросов про архитектуру.
А на приеме у врача градусник держать под мышкой.
https://www.google.com/search?q=use case это&oq=use case&aqs=chrome.3.69i57j0l3.4238j0j8&client=tablet-android-huawei&sourceid=chrome-mobile&ie=UTF-8
...
Рейтинг: 0 / 0
Stream API
    #39935799
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.
...
Рейтинг: 0 / 0
Stream API
    #39935823
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
ты назвал данный флоу -говном ,при этом ничего не обосновав)
Как это не по программистски)
но раз тебе нужен юзкейс ,ок

это валидатор
с сайта прилетает заявка-в джейсоне ,что то валидируется bean validation
что то должны проверить мы
в данном конкретном случае я должен проверить код страны фактический и регистрации и если код этот не РФ ,то должен кинуть наш кастомный exeption
задача не трививиальная- тоесть возьми с джейсона этот лист -пройдись по нему циклом и удали оттуда все что не похоже на код РФ -далее сверь размер-если 2 - то ок,не 2 - кидаем ошибку,которая приатачится к ответу и оператор сможет это увидеть и либо поправить ,либо отказать заемщику-как то так.
вот моя задача была стилистически все это сделать в таком флоу как выше-ибо весь валидатор построен в таком плане.
без ифов и создания новых обьектов
.
...
Рейтинг: 0 / 0
Stream API
    #39935838
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
ты назвал данный флоу -говном ,при этом ничего не обосновав)
Как это не по программистски)
По правилам форума ты ОБЯЗАН в вопросе предоставить всю информацию.

asv79
это валидатор
потрудись немного. Я просил код. С КОММЕНТАРИЕМ: "Вот в этом месте мне нужно то то и то то";
...
Рейтинг: 0 / 0
Stream API
    #39935839
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Ну а фраза "мне нужно райзе" не катит.
...
Рейтинг: 0 / 0
Stream API
    #39935846
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79
ты назвал данный флоу -говном ,при этом ничего не обосновав)
Как это не по программистски)
По правилам форума ты ОБЯЗАН в вопросе предоставить всю информацию.

asv79
это валидатор
потрудись немного. Я просил код. С КОММЕНТАРИЕМ: "Вот в этом месте мне нужно то то и то то";

зачем мне давать тебе код,который находится в закрытом контуре)
тем более давно уже решили задачку,пока ты щеки тут надувал)))
...
Рейтинг: 0 / 0
Stream API
    #39935850
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
22095724
...
Рейтинг: 0 / 0
Stream API
    #39935857
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79,
22095724

петро закусывай)
...
Рейтинг: 0 / 0
Stream API
    #39935863
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Девочки - не ссорьтесь.

Вот подумайте лучше можно ли все SQL-опции (агрегирующие GROUP BY и аналитические OVER.. PARTITION BY) заменить на Stream::collect/reduce?

Я над этим периодически думаю и вижу что на SQL - красиво а на stream - говнецо выходит.
...
Рейтинг: 0 / 0
Stream API
    #39935874
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Согласись, что group by более органично выглядит на рисунке чем райзе

Тема себя исчерпала.
...
Рейтинг: 0 / 0
Stream API
    #39935883
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Девочки - не ссорьтесь.

Вот подумайте лучше можно ли все SQL-опции (агрегирующие GROUP BY и аналитические OVER.. PARTITION BY) заменить на Stream::collect/reduce?

Я над этим периодически думаю и вижу что на SQL - красиво а на stream - говнецо выходит.

вопрос в том что ты хочешь получить в конечном результате
если производительность- я думаю сейчас это уже неактуально - все в облаках,мощностей хватает сделать групинг в сервис слое
ну и вообще хибер из коробки это умеет -поэтому если ты пользуешь хибер - то такой вопрос не возникнет
если ты юзаешь чистый жидибиси ,то наверно логичней этот функционал оставить на стороне базы
...
Рейтинг: 0 / 0
Stream API
    #39935888
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
мощностей хватает сделать групинг в сервис слое
да да. Помню. Ты предлагал group by user сделать "частототой вхождения в мапу" так как не сдела справочник юзверей и FK.
...
Рейтинг: 0 / 0
Stream API
    #39935891
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
asv79,
Ну и с точки зрения архитектуры, стрим это постоянно текущая река.
Поэтому вопрос твой странный или из категории кунсткамера.


Про терминальные операторы не слышал?
...
Рейтинг: 0 / 0
Stream API
    #39935892
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SpringMan
В операциях по стримам можно сохранить/передать состояние только через общую переменну, reduce или collect. Если надо сделать на стримах, то подходит вроде только collect. Сделать через него можно, но это то еще извращение.


По доке все компоненты в стримах должны быть stateless
...
Рейтинг: 0 / 0
Stream API
    #39935895
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник
На этот раз поддержу Петро, кидать исключения в стриме - противоречит самой концепции стримов. Такое случается когда смузеры начинают осваивать новую технологию не разобравшись для чего она.


https://dzone.com/articles/exception-handling-in-java-streams
...
Рейтинг: 0 / 0
Stream API
    #39935896
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner
PetroNotC Sharp
asv79,
Ну и с точки зрения архитектуры, стрим это постоянно текущая река.
Поэтому вопрос твой странный или из категории кунсткамера.


Про терминальные операторы не слышал?
антипаттерн слышал?
...
Рейтинг: 0 / 0
Stream API
    #39935903
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton
Девочки - не ссорьтесь.

Вот подумайте лучше можно ли все SQL-опции (агрегирующие GROUP BY и аналитические OVER.. PARTITION BY) заменить на Stream::collect/reduce?

Я над этим периодически думаю и вижу что на SQL - красиво а на stream - говнецо выходит.

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

Мой вопрос звучит пока так.

Можно ли?

А дальше уже пойдем от перформанса. Я как-то написал запрос с оконной функцией от чего
у одного йуного джава юниора полезли глаза на лоб. Он не знал что в SQL есть такие
возможности вообще. Вот такие вот неграмотные бородачи будут двигать индустрию через
10 лет.

Это знаете. Как эпоха средневековья после античности. Вроде время и идет вперед а люди
знания теряют.
...
Рейтинг: 0 / 0
25 сообщений из 174, страница 3 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Stream API
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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