簡體   English   中英

將Java Map Enum鍵轉換為Map String鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM