【发布时间】:2017-06-17 21:18:51
【问题描述】:
我正在尝试将一个 Map 转换为另一个 Map,其中新键只是原始键 toString()。使用流 API 我这样做如下:
mapMap.entrySet().stream().collect(Collectors.toMap(
(Map.Entry entry) -> entry.getKey().toString(),
(Map.Entry entry) -> entry.getValue()
));
问题是这不保留内部 Map 类型。如果原始地图恰好是 HashMap,我不介意返回 TreeMap,但反过来会出现问题,因为删除了元素的排序。我一直在玩弄上述代码的变体来完成这项工作,但我似乎并没有走得太远。现在,我已经写了没有流,如下:
TreeMap<String, Integer> stringMap = new TreeMap<>();
for (OriginalType t: originalMap.keySet()) {
stringMap.put(t.toString(), originalMap.get(t));
}
谁能让我在正确的方向上使用流来做到这一点? 谢谢
【问题讨论】:
-
流没有类似
into的函数可以将结果转储到某个实现中吗? -
生成的
TreeMap将使用键字符串的字典顺序,而不管原始映射的顺序如何。这没有保留任何东西。
标签: java-8 java-stream