2014-01-10 127 views
25

我有兩個地圖轉換地圖<String,字符串>地圖<字符串,對象>

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); 
      } 
     } 

它工作正常,是否有任何其他方法,使我能做到這一點,而無需通過在地圖中的所有條目進行迭代。

+0

爲什麼不使用putAll api方法,以防你想保留兩個引用。 –

回答

28

你可以使用putAll:(見the Javadoc

filterMapObj.putAll(filterMap); 

編輯補充:我要指出的是,上述方法是比較少或 - 相當於迭代地圖的元素:它會讓你的代碼更清潔,但是如果你不想遍歷元素的原因實際上是性能問題(例如,如果你的地圖很大),那麼它不可能幫助你。另一種可能性是寫:

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

其產生的filterMap一個不可修改的「視圖」。這是更嚴格的,當然,它不會讓你獨立修改filterMapObjfilterMap。 (filterMapObj不能被修改,任何修改filterMap會影響filterMapObj爲好。)

+0

@PrasadKharkar:我不會說我的解決方案比你的解決方案更好,只是他們服務於不同的目的。 (你的提示OP可能有XY問題。)兩者都沒有錯。 :-) – ruakh

7

您可以對此使用通配符運算符。 定義爲filterMapObjMap<String, ? extends Object> filterMapObj,您可以直接將其分配給filterMap。您可以瞭解generics wildcard operator

1

可以使用的putAll方法來解決problem.The對象是父類中的所有對象的,所以你可以使用無的putAll兌換。

相關問題