Ответ 1
Вам необходимо записать записи и собрать их на новой карте:
Map<String, String> result = map.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, e -> String.valueOf(e.getValue()));
Скажем, у меня есть 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
.
Вам необходимо записать записи и собрать их на новой карте:
Map<String, String> result = map.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, e -> String.valueOf(e.getValue()));
Самый простой способ сделать это:
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.replaceAll
, заключается в map.replaceAll
, что интерфейс Map
не предлагает такого, ближе всего вы можете добраться до этого map.replaceAll
, но этот метод диктует, что тип должен оставаться неизменным.