簡體   English   中英

轉換地圖<String,String>到地圖<String,Object>

[英]Converting Map<String,String> to Map<String,Object>

我有兩張地圖

Map<String, String> filterMap 
Map<String, Object> filterMapObj

我需要的是我想將Map<String, String>轉換為Map<String, Object> 我在這里使用代碼

        if (filterMap != null) {
            for (Entry<String, String> entry : filterMap.entrySet()) {
                String key = entry.getKey();
                String value = entry.getValue();
                Object objectVal = (Object)value;
                filterMapObj.put(key, objectVal);
            }
        }

它工作正常,有沒有其他方法可以在不遍歷 Map 中的所有條目的情況下執行此操作。

無需編寫自己的調用put循環,您可以putAll ,它執行相同的操作:

filterMapObj.putAll(filterMap);

(請參閱Javadoc 。)

正如 Asanka Siriwardena 在他/她的回答中指出的那樣,如果您的計划是在創建filterMapObj后立即填充它,那么您可以使用自動執行此操作的構造函數:

filterMapObj = new HashMap<>(filterMap);

但要清楚的是,以上內容或多或少相當於迭代地圖的元素:它會使您的代碼更清晰,但是如果您不想迭代元素的原因實際上是一個性能問題(例如,如果您的地圖是巨大的),那么它不太可能幫助你。 另一種可能是寫:

filterMapObj = Collections.<String, Object>unmodifiableMap(filterMap);

這創建了filterMap的不可修改的“視圖”。 當然,這更具限制性,因為它不會讓您獨立修改filterMapObjfilterMap filterMapObj不能修改,對filterMap任何修改也會影響filterMapObj 。)

您可以為此使用通配符運算符。 filterMapObj定義為Map<String, ? extends Object> filterMapObj Map<String, ? extends Object> filterMapObj並且您可以直接將filterMap分配給它。 您可以了解泛型通配符運算符

你可以簡單地寫

Map<String, Object> filterMapObj = new HashMap<>(filterMap);

可以使用putAll方法來解決這個問題。Object是所有對象的父類,所以不用轉換就可以使用putAll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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