Java 8 - Карта Массив / Коллекция на месте - PullRequest
0 голосов
/ 05 сентября 2018

Существует ли в Java 8 способ преобразования массива / коллекции с использованием map() без необходимости переназначения созданной копии, например,

Arrays.stream(array).mapInPlace(x -> x / 100);
list.stream().mapInPlace(e -> e.replaceAll(" ", ""));

вместо

array = Arrays.stream(array).map(x -> x / 100).toArray();
list = list.stream().map(e -> e.replaceAll(" ", "")).collect(Collectors.toList());

Если нет, то в чем причина этого дизайнерского решения?

1 Ответ

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

Возможно, использование List::replaceAll в вашем случае может помочь вам:

Arrays.asList(array).replaceAll(x -> x / 100);

и

list.replaceAll(e -> e.replaceAll(" ", ""));

Идеальная демонстрация


Хороший смысл от @ Хольгера , если вам нужен индекс, который вы можете использовать Arrays::setAll:

Arrays.setAll(array, x -> array[x] / 100);

Или, что еще лучше, если вы хотите, чтобы ваша работа шла параллельно, вы можете использовать Arrays::parallelSetAll:

Arrays.parallelSetAll(array, x -> array[x] / 100);
...