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());
?
如果没有,做出此设计决定的原因是什么?
答案 0 :(得分:8)
也许您的情况下使用List::replaceAll
可以为您提供帮助:
Arrays.asList(array).replaceAll(x -> x / 100);
和
list.replaceAll(e -> e.replaceAll(" ", ""));
@Holger的好处,如果您需要索引,可以使用Arrays::setAll
:
Arrays.setAll(array, x -> array[x] / 100);
如果希望并行完成工作,则可以使用Arrays::parallelSetAll
:
Arrays.parallelSetAll(array, x -> array[x] / 100);