Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7   вперед  Ctrl      все
 Stream API  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2991
Ребят нужна ваща помощь.
как мне кинуть исключение ,если в stream 1 элемент ,при этом я не могу использовать ни коллекцию ни if
конструкция кода такова есть лист,фильтруем его и если количество элементов 1-кидаем исключение
может можно и как то по другому
у меня там вообще стояло так - filtr-findfirst()-orElseThrow но при таком раскладе кидает исключение если не найдет ни 1 элемента


list.stream
.filter()

????
()->throw new Exeption
5 мар 20, 14:06    [22093481]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
asv79,
Опять теория?
Фильтруем в пустоту?
Обычно фильтруют в конечную переменную.
Потом ее и проверяй.
То есть добавь сюда код БЛ, а не пример из книги или снов.
5 мар 20, 14:59    [22093538]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
andreykaT
Member

Откуда:
Сообщений: 2720
можно иф добавить внутрь фильтра ))) и кинуть там эксепшн. правда вроде в жаве были какие то особенности на эту тему.

в скале я б сделал матч кейс. что впрочем, та же хрень.
5 мар 20, 15:00    [22093542]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5183
asv79
Ребят нужна ваща помощь.
как мне кинуть исключение ,если в stream 1 элемент ,при этом я не могу использовать ни коллекцию ни if
конструкция кода такова есть лист,фильтруем его и если количество элементов 1-кидаем исключение
может можно и как то по другому
у меня там вообще стояло так - filtr-findfirst()-orElseThrow но при таком раскладе кидает исключение если не найдет ни 1 элемента


list.stream
.filter()

????
()->throw new Exeption


Например так <:o)

public class StreamApiException {
    private List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5);

    public void test() {
        assert(list.stream().filter(i -> i == 1).count() != 1L);
    }
}
5 мар 20, 15:10    [22093557]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
mad_nazgul,
+1
В чем проблема у ТС я не увидел.
5 мар 20, 16:43    [22093688]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
mad_nazgul
count() != 1L)
щаз скажет что буква L лишняя.
5 мар 20, 16:44    [22093691]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2991
mad_nazgul
asv79
Ребят нужна ваща помощь.
как мне кинуть исключение ,если в stream 1 элемент ,при этом я не могу использовать ни коллекцию ни if
конструкция кода такова есть лист,фильтруем его и если количество элементов 1-кидаем исключение
может можно и как то по другому
у меня там вообще стояло так - filtr-findfirst()-orElseThrow но при таком раскладе кидает исключение если не найдет ни 1 элемента


list.stream
.filter()

????
()->throw new Exeption


Например так <:o)

public class StreamApiException {
    private List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5);

    public void test() {
        assert(list.stream().filter(i -> i == 1).count() != 1L);
    }
}

и где тут экспешн кидается если стрим больше 1?
и условие читай - лист всего 1 ,второй раз из стрима в лист нельзя и ифы нелья
так то я бы сделал filtr-collect(Collections.Singltone).orElstThrow(()->retrun Exeption)
5 мар 20, 16:47    [22093695]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2991
andreykaT
можно иф добавить внутрь фильтра ))) и кинуть там эксепшн. правда вроде в жаве были какие то особенности на эту тему.

в скале я б сделал матч кейс. что впрочем, та же хрень.

иф нельзя я же написал,как будто я сам не знаю что ифом проверить и все кек)
но вот нельзя
5 мар 20, 16:48    [22093697]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
asv79
второй раз из стрима в лист нельзя
он замерил Результат стрима.
Такого условия не было.
5 мар 20, 16:58    [22093714]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
asv79,
Ну и с точки зрения архитектуры, стрим это постоянно текущая река.
Поэтому вопрос твой странный или из категории кунсткамера.
5 мар 20, 17:06    [22093728]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2991
PetroNotC Sharp
asv79,
Ну и с точки зрения архитектуры, стрим это постоянно текущая река.
Поэтому вопрос твой странный или из категории кунсткамера.

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

лист-stream-filtr-findFirst-orElseThrow

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

в кейсе это идет проверка кода страны двух адресов заемщика - фактического и регистрации
тоесть если какой то из этих кодов не 643 я должен записать в лог ошибку и кинуть эксепшн
5 мар 20, 17:16    [22093746]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
asv79
там все просто нас заставляют придерживаться общей стилистики кода
это хорошо
asv79
например если в валидаторе нет ифов ,а все обренутов в опшиналы,значит надо делать так же
этот пример какое отношение к стримам?
Напиши - "перед едой мыть руки".

asv79
фильтруем лист по какому то условию и бац - два элемента у одного проходит условие у другого нет
пример где? Реальный?
Ты выше сказал нечто странное.
Пример mad_nazgul видем?
Сделай такой же!
5 мар 20, 17:27    [22093757]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
asv79,
Зы.
Я твой лично код давно не видел. В основном разговоры про чужой код.
Ждем.
5 мар 20, 17:28    [22093760]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3531
asv79

там все просто нас заставляют придерживаться общей стилистики кода
Это в банках TOP-1 заставляют ребусы писать?

List<String> l = Arrays.asList("1");
Object anchor = new Object();
Stream.concat(
        l.stream(),
        Stream.of(anchor, new Object())
).skip(1).limit(1).findFirst().filter(e -> e != anchor)
        .orElseThrow(RuntimeException::new);


Сообщение было отредактировано: 5 мар 20, 17:35
5 мар 20, 17:33    [22093767]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
SpringMan
Member

Откуда:
Сообщений: 140
В операциях по стримам можно сохранить/передать состояние только через общую переменну, reduce или collect. Если надо сделать на стримах, то подходит вроде только collect. Сделать через него можно, но это то еще извращение.
5 мар 20, 17:34    [22093769]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
andreykaT
Member

Откуда:
Сообщений: 2720
в идее стримов такой случай тебе не нужен а если нужен ты чот не то делаешь.
5 мар 20, 18:21    [22093835]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
SpringMan
Member

Откуда:
Сообщений: 140
Исключительно ради огромной любви к извращениям:
        
Arrays.<String>asList("a").stream().parallel()
        .limit(2)
        .collect(
                () -> (Optional<String>[]) (new Optional[]{Optional.of("SUCCESS")}),
                (s, s2) -> s[0] = Optional.<String>empty(),
                (s, s2) -> s[0] = Optional.of("SUCCESS")
        )[0]
        .orElseThrow((RuntimeException::new));
5 мар 20, 18:24    [22093837]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
andreykaT
в идее стримов такой случай тебе не нужен а если нужен ты чот не то делаешь.
да. Он юз кейс странно описал.
Поэтому и просил у него код.
Он этого в жизни не делал))))

Сообщение было отредактировано: 5 мар 20, 18:44
5 мар 20, 18:39    [22093852]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2991
Андрей Панфилов
asv79

там все просто нас заставляют придерживаться общей стилистики кода
Это в банках TOP-1 заставляют ребусы писать?

List<String> l = Arrays.asList("1");
Object anchor = new Object();
Stream.concat(
        l.stream(),
        Stream.of(anchor, new Object())
).skip(1).limit(1).findFirst().filter(e -> e != anchor)
        .orElseThrow(RuntimeException::new);

не прокатит такое
создается дополнительный объект ,-я таким же успехом я этот стрим засну обратно в лист и положу туда синглтон ,а так как у нас две позиции - то выбросится исключение
тут идея в том чтобы не засорять память лишними объектами
пс.а то что ты выше привел делает reduce(),но оно мне не подходит
5 мар 20, 19:12    [22093885]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2991
SpringMan
Исключительно ради огромной любви к извращениям:
        
Arrays.<String>asList("a").stream().parallel()
        .limit(2)
        .collect(
                () -> (Optional<String>[]) (new Optional[]{Optional.of("SUCCESS")}),
                (s, s2) -> s[0] = Optional.<String>empty(),
                (s, s2) -> s[0] = Optional.of("SUCCESS")
        )[0]
        .orElseThrow((RuntimeException::new));

ты создаешь новый объект - тем самым нарушая условия- то что ты выше написал делается в одну строчку collect(Collections.singletone)
5 мар 20, 19:14    [22093886]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2991
PetroNotC Sharp
нет
пример где? Реальный?
Ты выше сказал нечто странное.
Пример mad_nazgul видем?
Сделай такой же![/quot]
мы в контуре работаем оттуда не работает копипаст,а руками набивать опухнешь)
так что код ты не увидишь)
5 мар 20, 19:15    [22093889]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
asv79
тут идея в том чтобы не засорять память лишними объектами
неужели твоя супер идея?
stream..... filter......
Каким образом без создания объекта будем использовать результат фильтра?
5 мар 20, 19:16    [22093890]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
asv79
набивать опухнешь)
а он смог?
private List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5);
?
5 мар 20, 19:17    [22093894]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
Стримы бывают ленивые. Например, по сети из Африки.
Поэтому, пока не создашь объект = результат, не узнаешь count.
5 мар 20, 19:20    [22093897]     Ответить | Цитировать Сообщить модератору
 Re: Stream API  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4508
asv79
так что код ты не увидишь)
я знаю. У тебя цель - ПТ.
5 мар 20, 19:22    [22093899]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7   вперед  Ctrl      все
Все форумы / Java Ответить