2013-06-27 142 views
2

這裏我有兩個hashmaps datazscreen_dataz。我想將screen_dataz複製到dataz如何將一個hashmap內容複製到另一個hashmap

我想是這樣,但它不工作:

Object[] obj = new Object[5]; 
String[] strArray = new String[]{"Obj1","Array1","Converted1","To1","List1"}; 
String[] strArray1 = new String[]{"Obj2","Array2","Converted2","To2","List2"}; 
dataz.put(0,(Object[]) strArray); 
dataz.put(1,(Object[]) strArray1); 
// String dataString = (String) dataz; 
System.out.println(dataz); 


Object[] obj1= new Object[5]; 
String[] strArray2 = new String[]{"Obj3","Array3","Converted3","To3","List3"}; 
String[] strArray3 = new String[]{"Obj4","Array4","Converted4","To4","List4"}; 
screen_dataz.put(0,(Object[]) strArray2); 
screen_dataz.put(1,(Object[]) strArray3); 
System.out.println("copying screen dataz to dataz"); 
dataz.putAll(screen_dataz); 
+4

請出示'dataz'和'screen_dataz'的定義和解釋你的意思是「它不工作」。 –

+0

對,直到我們定義了'dataz',下面的幾個答案可能是錯誤的! –

回答

2

看起來像它不工作,因爲你正在使用相同的密鑰(0和1)無論是在datazscreen_dataz

按照official javadocputAll「將替換此映射的所有當前指定映射中鍵的任何映射關係。」,所以你現在丟失以前包含在dataz對象。

5
Map tmp = new HashMap(patch); 
tmp.keySet().removeAll(target.keySet()); 
target.putAll(tmp); 

有關詳細explanation

2

它已經發布here

Map tmp = new HashMap(patch); 
tmp.keySet().removeAll(target.keySet()); 
target.putAll(tmp); 
16

。利用構造和淺吧。

dataz = new HashMap<Key,val>(screen_dataz); 
+0

這可能是解決方案。但是'dataz'也許有一些有用的數據。可能值得等待,直到OP更緊密地定義問題。 –

+1

嘿,做'screen_dataz'和'dataz'指的是同一個位置嗎?正如我試過這樣,刪除'dataz'中的值也從'screen_dataz'中刪除了值。我實際上想要將一個地圖中的值複製到新的地圖上,而不是指向同一位置的兩個變量。 –

8

你可以簡單地construct一個新問題:

dataz = new HashMap<Integer,Object>(screen_dataz); 
+3

擊敗你6秒:) :) :) –

+4

@Baadshah我會帶着我的復仇有一天! Muahaha – Maroun

+0

據我所知,你們倆都衝着一些可能是正確的東西。但是你已經做了一個很大的假設,'dataz'可以被覆蓋。 –

0
HashMap<String, String> hash1 = new HashMap(); 
    hash1.put("one", "the firs one"); 
    hash1.put("two", "the second one"); 
    hash1.put("three", "the third one"); 
    HashMap<String, String> hash2 = new HashMap<>(); 
    hash2.putAll(hash1); 
1

試試這個

HashMap<Integer,String> myMap=new HashMap<>(); 
    myMap.put(1,"A"); 
    myMap.put(2,"B"); 
    HashMap<Integer,String> newMap=new HashMap<>(); 
    newMap.putAll(myMap); 
相關問題