java - Java 8 - 就地映射数组/集合
问题描述
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());
?
如果不是,这个设计决定的原因是什么?
解决方案
也许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);
推荐阅读
- javascript - Global state for server side rendering
- php - PHP: How to prevent form fields from being pre-filled if a user hits a browser back button?
- python - 如何打印来自while循环的每个输入值
- python - Is there a way to compare the last row of two different dataframes?
- unreal-engine4 - how to access a blueprint component with an Unreal pawn character spawned from the player start set up in the game mode?
- python - Storing collection information in a class
- python - Python multiprocessing is not calling function
- javascript - 如何获取输入填充的值
- reactjs - File structure and scripts for deploying next js app to netlify
- android-studio - pass string from startActivityForResult to onActivityResult in RecyclerView