使用流将数组转换为映射

我有一个整数列表, [1,2,3,4,5]我想在应用乘法函数 (*5) 后将其转换为映射,如下所示:

 {1 = 5, 2 = 10, 3 = 15, 4 = 20, 5 = 25}

我能够使用流并使用 map 函数来执行乘法,但我对如何将结果转换为 map 感到困惑。

myList.stream().map(n -> n * 5).collect( ... )

有人可以帮忙吗。

回答

您当前的流管道将原始值转换为新值,因此您无法将其收集到Map同时包含原始值和新值的 。

如果不是在 中map使用.collect(Collectors.toMap())和执行乘法,则可以实现它toMap()

Map<Integer,Integer> map =
    myList.stream()
          .collect(Collectors.toMap(Function.identity(),
                                    n -> n * 5));

在您仍然想使用 时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));


以上是使用流将数组转换为映射的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>