Как использовать один ко многим Mapping в потоке Java 8? - PullRequest
0 голосов
/ 13 сентября 2018

В map функции Stream мы можем преобразовать один объект в другой, поэтому мы можем преобразовать один Stream, который содержит 3 элемента типа A, в другой Stream из 3 элементов типа B.

Как преобразовать 3 элемента типа A Stream в 6 или более элементов типа B Stream в зависимости от условия?

В терминах кода.

Мы можем сделать

Stream<B> converted = original.map( a -> new B(a) );

Но как мы можем сделать, как следовать?

Steam<B> converted = original.map( a -> { 
    if(a.split()){
        return [ new B(a), new B(a) ];
    }else return new B(a);
});

Я не смог найти и понять, как это сделать.Спасибо вперед.

1 Ответ

0 голосов
/ 13 сентября 2018

Вы используете flatMap для отображения каждого элемента оригинального Stream на Stream элементов некоторого типа.

Steam<B> converted = original.flatMap( a -> { 
    if(a.split()){
        return Stream.of(new B(a), new B(a));
    } else {
        return Stream.of(new B(a));
    }
});

или

Steam<B> converted = original.flatMap(a -> a.split() ? 
                                      Stream.of(new B(a), new B(a)) : 
                                      Stream.of(new B(a)));
...