Дублируйте каждый элемент массива через потоки в Java - PullRequest
0 голосов
/ 28 мая 2018

У меня есть какой-то массив

int[] a = {1,2,3,4,5};

Как я могу получить другой массив из этого с дублирующимися элементами через потоки.Я имею в виду что-то вроде этого

result = Stream.of(a).map(...)
// after that result = {1,1,2,2,3,3,4,4,5,5}

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Вот один из способов:

int[] result = Arrays.stream(a)
                     .flatMap(e -> IntStream.of(e,e))
                     .toArray();

или:

int[] result = Arrays.stream(a)
                     .flatMap(e -> IntStream.generate(() -> e).limit(2))
                     .toArray();
0 голосов
/ 28 мая 2018

Я надеюсь, что это может помочь вам

int[] a = {1, 2, 3, 4, 5};
IntStream.concat(Arrays.stream(a), Arrays.stream(a)).sorted().forEach(element -> System.out.print(element));
0 голосов
/ 28 мая 2018

Вам понадобится flatMap вместо map.Например,

int[] a = { 1, 2, 3, 4, 5 };
int[] result = IntStream.of(a).flatMap(x -> IntStream.of(x, x)).toArray();
System.out.println(Arrays.toString(result));

Выходы (по запросу)

[1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...