2013-06-27 101 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); 
相关问题