我有以下地图:
$identifier
但我需要将其转换为以下内容:
Map<DataFields, String> myMap;
我最好的微弱尝试甚至无法编译:
Map<String, String> myMap;
答案 0 :(得分:6)
您需要流式传输entrySet()
(因此您拥有密钥和值),并将它们收集到地图中:
Map<String, String> result =
myMap.entrySet()
.stream()
.collect(Collectors.toMap(e -> e.getKey().name(), e -> e.getValue()));
答案 1 :(得分:2)
Map<String, String> result = myMap
.entrySet() // iterate over all entries (object with tow fields: key and value)
.stream() // create a stream
.collect(Collectors.toMap(e -> e.getKey().toString(), e -> e.getValue()));
// collect to map: convert enum Key value toString() and copy entry value
答案 2 :(得分:2)
在没有Collectors帮助器的情况下执行相同操作的另一种方法。使用entryset
可以很容易地进行映射。
map.entrySet()
.stream()
.collect(
() -> new HashMap<String, String>(),
(Map newMap, Map.Entry<DataFields, String> entry) -> {
newMap.put(entry.getKey().name(), entry.getValue());
}
,
(Map map1, Map map2) -> {
map.putAll(map2);
}
);
答案 3 :(得分:2)
Java 8,一种简单的方法(没有流):
Map<String, String> result = new HashMap<>();
myMap.forEach((k, v) -> result.put(k.name(), v));