[英]Convert Java Map Enum keys to Map String keys
我有以下地圖:
Map<DataFields, String> myMap;
但我需要將其轉換為以下內容:
Map<String, String> myMap;
我最好的微弱嘗試,甚至沒有編譯是:
myMap.keySet().stream().map(k -> k.name()).collect(Collectors.toMap(k, v)
您需要流式傳輸entrySet()
(因此您同時擁有鍵和值),並將它們收集到地圖中:
Map<String, String> result =
myMap.entrySet()
.stream()
.collect(Collectors.toMap(e -> e.getKey().name(), e -> e.getValue()));
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
沒有收集器助手的另一種方法。 使用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);
}
);
Java 8,一種簡單的方法(沒有流):
Map<String, String> result = new HashMap<>();
myMap.forEach((k, v) -> result.put(k.name(), v));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.