Можно ли получит параметр `flatMap` в стриме?

201
06 января 2018, 02:37

Можно ли получит параметр flatMap в стриме ?

 list.stream().flatMap(a -> a.getBs().stream()).forEach(b->System.out.print(a));

Предположим у меня нет обратной связи от a к b

Answer 1

Если вам для этой задачи хочется использовать стримы (кстати, зачем? раз вы сталкиваетесь с трудностями, может быть цикл будет более разумным решением?), то найдите способ доставить в конец цепочки и значение a и b. Поскольку в java нет кортежей, создайте свой класс-контейнер для пары значений:

public class Pair<A, B> {
    public final A fst;
    public final B snd;
    public Pair(A a, B b) { fst = a; snd = b; }
}  

и мапьте ваш список в stream пар:

list.stream()
    .flatMap(a -> a.getBs().stream().map(b -> new Pair(a, b)))
    .forEach(pair -> System.out.print(pair.fst));
Answer 2

Stream, как следует из его названия - это поток, что "вытекло" из одной операции, то и поступит в другую.

READ ALSO
Задача Minimum of two. Проблема с циклом

Задача Minimum of two. Проблема с циклом

Есть 20 пар чисел через пробелНадо найти минимум в каждой паре

188
Генерация изображения средствами java [требует правки]

Генерация изображения средствами java [требует правки]

Можно ли средствами голой java реализовать механизм генерации изображения из строки? Или какие средства позволяют решить эту задачу?

180
Java EE соединиться с удаленной БД MySQL

Java EE соединиться с удаленной БД MySQL

Здравствуйте, пытаюсь соединить с удаленной БД MySql, но выходят ошибки с неправильным указанием адреса, много раз писал в тех поддержку, но все...

180