小编典典

Java8:哈希映射到 HashMap使用 Stream / Map-Reduce / Collector

all

我知道如何ListY-> “转换”一个简单的Java Z,即:

List<String> x;
List<Integer> y = x.stream()
        .map(s -> Integer.parseInt(s))
        .collect(Collectors.toList());

现在我想对地图做基本相同的事情,即:

INPUT:
{
  "key1" -> "41",    // "41" and "42"
  "key2" -> "42"      // are Strings
}

OUTPUT:
{
  "key1" -> 41,      // 41 and 42
  "key2" -> 42       // are Integers
}

解决方案不应限于String-> Integer。就像List上面的例子一样,我想调用任何方法(或构造函数)。


阅读 85

收藏
2022-05-20

共1个答案

小编典典

Map<String, String> x;
Map<String, Integer> y =
    x.entrySet().stream()
        .collect(Collectors.toMap(
            e -> e.getKey(),
            e -> Integer.parseInt(e.getValue())
        ));

它不如列表代码那么好。您不能Map.Entrymap()调用中构造 new ,因此工作会混入collect()调用中。

2022-05-20