Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Iterator To Stream / 10 сообщений из 10, страница 1 из 1
04.05.2017, 10:35
    #39448447
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
Подскажите как можно переделать следующий кусок на stream

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        Iterator<Order> iter = orders.iterator();
        while (iter.hasNext()) {
            Order order = iter.next();
            if (order.getCurrencies() == null || order.getCurrencies().isEmpty()) {
                iter.remove();
                continue;
            }
            for (Currencies currencies : order.getCurrencies()) {
                if (currencies.getSum() == null) {
                    iter.remove();
                    continue;
                }
            }
        }



Первый я переделал, а как можно совместить со вторым?
Или это отдельный фильтр надо?

orders = orders.stream().filter(pl -> pl.getCurrencies() == null || pl.getCurrencies().isEmpty()).collect(Collectors.toList());
...
Рейтинг: 0 / 0
04.05.2017, 10:36
    #39448449
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
То собствеено вопрос
Как в stream filter отрабатывать вложенные циклы for
...
Рейтинг: 0 / 0
04.05.2017, 11:04
    #39448488
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
Iterator оборачивается в Stream через Spliterator
https://docs.oracle.com/javase/8/docs/api/java/util/Spliterators.html
Но я ещё бы посмотрел откуда этот Iterator нарисовался, потому как есть и другие методы. Например, Iterable.spliterator().
...
Рейтинг: 0 / 0
04.05.2017, 11:07
    #39448493
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
Вместо такой херни
Код: java
1.
2.
3.
            
if (order.getCurrencies() == null || order.getCurrencies().isEmpty()) {
if (currencies.getSum() == null) {


Стоит писать так:
Код: java
1.
2.
3.
            
if (order.hasCurrencies()) {
if (currencies.hasSum()) {



Можно было бы и Optional прикрутить, если бы он не был таким корявым в Java 8
...
Рейтинг: 0 / 0
04.05.2017, 11:09
    #39448500
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
Blazkowicz:
Код: java
1.
2.
3.
            
if (order.hasCurrencies()) {
if (currencies.hasSum()) {



А если подумать ещё немного об инкапсуляции, то стоило оставить только
Код: java
1.
if (order.hasCurrenciesWithSum()) {
...
Рейтинг: 0 / 0
04.05.2017, 11:09
    #39448502
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
-=Koba=-То собствеено вопрос
Как в stream filter отрабатывать вложенные циклы for
В данном случае никак.
...
Рейтинг: 0 / 0
04.05.2017, 11:13
    #39448507
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
-=Koba=-
Код: java
1.
orders = orders.stream().filter(pl -> pl.getCurrencies() == null || pl.getCurrencies().isEmpty()).collect(Collectors.toList());



Код: java
1.
orders.removeIf(o -> !o.hasCurrenciesWithSum());



Но я бы написал так:
Код: java
1.
orders.removeIf(Order::isInvalid);
...
Рейтинг: 0 / 0
04.05.2017, 17:57
    #39448924
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
Хотелось бы уточнить у вас

Вот я передела так, здесь правильно?

Код: java
1.
return orders.stream().filter(pl -> pl.getCurrencies().stream().allMatch(cur -> cur.getSum() != null)).collect(Collectors.toList());
...
Рейтинг: 0 / 0
04.05.2017, 23:35
    #39449055
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
а тест запустить религия не позволяет?

Как всегда Blazkowicz не поленился, все расписал, а ему в ответ - да! точно, все понял!!! ну только я свой вариант оставлю.. Железного терпения человек
...
Рейтинг: 0 / 0
05.05.2017, 09:59
    #39449185
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iterator To Stream
забыл ника тест запустить религия не позволяет?

Как всегда Blazkowicz не поленился, все расписал, а ему в ответ - да! точно, все понял!!! ну только я свой вариант оставлю.. Железного терпения человек
Тест запустил и возник вопрос...
Спросил, потому, как сделал до того как прочитал ответ...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Iterator To Stream / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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