说我有Map<String, Integer>
。是否有一种从中获取Map<String, String>
的简单方法?
简单来说,我的意思是不喜欢这样:
Map<String, String> mapped = new HashMap<>();
for(String key : originalMap.keySet()) {
mapped.put(key, originalMap.get(key).toString());
}
而是一些像衬里一样的衬里:
Map<String, String> mapped = originalMap.mapValues(v -> v.toString());
但显然没有方法mapValues
。
答案 0 :(得分:95)
您需要流式传输条目并在新地图中收集它们:
Map<String, String> result = map.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, e -> String.valueOf(e.getValue()));
答案 1 :(得分:20)
最简单的方法是:
Map<String, Integer> map = new HashMap<>();
Map<String, String> mapped = map.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> String.valueOf(entry.getValue())));
你在这里做的是:
Stream<Map.Entry<String, Integer>>
String.valueOf
。你不能在单行中执行此操作的原因是因为Map
接口不提供此类,因此最接近的是map.replaceAll
,但该方法指示类型应该保持不变。