sil*_*edh 52 java lambda map java-8
说我有一个Map<String, Integer>.有一种简单的方法可以从中得到Map<String, String>它吗?
通过简单,我的意思是不喜欢这样:
Map<String, String> mapped = new HashMap<>();
for(String key : originalMap.keySet()) {
mapped.put(key, originalMap.get(key).toString());
}
Run Code Online (Sandbox Code Playgroud)
而是一些像以下一样的班轮:
Map<String, String> mapped = originalMap.mapValues(v -> v.toString());
Run Code Online (Sandbox Code Playgroud)
但显然没有办法mapValues.
ass*_*ias 107
您需要流式传输条目并在新地图中收集它们:
Map<String, String> result = map.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, e -> String.valueOf(e.getValue()));
Run Code Online (Sandbox Code Playgroud)
ski*_*iwi 22
最简单的方法是:
Map<String, Integer> map = new HashMap<>();
Map<String, String> mapped = map.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> String.valueOf(entry.getValue())));
Run Code Online (Sandbox Code Playgroud)
你在这里做的是:
Stream<Map.Entry<String, Integer>>String.valueOf.你不能在一个单行中做的原因是因为Map接口没有提供这样的,你可以得到的最接近的是map.replaceAll,但是该方法规定类型应该保持不变.