use*_*862 0 java lambda stream
我有一个整数列表, [1,2,3,4,5]我想在应用乘法函数 (*5) 后将其转换为映射,如下所示:
{1 = 5, 2 = 10, 3 = 15, 4 = 20, 5 = 25}
Run Code Online (Sandbox Code Playgroud)
我能够使用流并使用 map 函数来执行乘法,但我对如何将结果转换为 map 感到困惑。
myList.stream().map(n -> n * 5).collect( ... )
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗。
您当前的流管道将原始值转换为新值,因此您无法将其收集到Map同时包含原始值和新值的 。
如果不是在 中map使用.collect(Collectors.toMap())和执行乘法,则可以实现它toMap():
Map<Integer,Integer> map =
myList.stream()
.collect(Collectors.toMap(Function.identity(),
n -> n * 5));
Run Code Online (Sandbox Code Playgroud)
在您仍然想使用 时map,您可以通过将每个值转换为一个来保留原始值Map.Entry:
Map<Integer,Integer> map =
myList.stream()
.map (n -> new SimpleEntry<> (n, n * 5))
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |