Java 8-映射一个数组/集合

时间:2018-09-05 10:16:57

标签: java arrays collections java-8 java-stream

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 :(得分:8)

也许您的情况下使用List::replaceAll可以为您提供帮助:

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

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

Ideone demo


@Holger的好处,如果您需要索引,可以使用Arrays::setAll

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

如果希望并行完成工作,则可以使用Arrays::parallelSetAll

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