【问题标题】:how to copy one hashmap content to another hashmap [closed]如何将一个哈希图内容复制到另一个哈希图 [关闭]
【发布时间】:2013-06-24 14:49:12
【问题描述】:

这里有两个哈希图datazscreen_dataz。我想将screen_dataz 复制到dataz

我正在尝试这样,但它不起作用:

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

【问题讨论】:

  • 请给出datazscreen_dataz 的定义,并解释您所说的“它不起作用”是什么意思。
  • 对,直到我们定义了dataz,下面的几个答案可以说是错误的!!!

标签: java hashmap


【解决方案1】:
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);
    

    【讨论】:

      【解决方案3】:

      使用构造函数并对其进行浅化。

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

      【讨论】:

      • 可能是一个解决方案。但也许dataz 中已经有一些有用的数据。可能值得等到 OP 更仔细地定义问题。
      • 嘿,screen_datazdataz 指的是同一个位置吗?当我尝试这样做并删除dataz 中的值时,也删除了screen_dataz 中的值。我实际上想将值从一个地图复制到一个新地图,而不是两个引用同一位置的变量。
      【解决方案4】:

      您可以简单地construct 一个新的:

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

      【讨论】:

      • 比你快 6 秒 :) +1 :)
      • @Baadshah 总有一天我会报仇的!哇哈哈
      • 据我所知,你们俩都匆匆忙忙做了一些可能是正确的事情。但是你做了一个很大的假设,dataz 可以被覆盖。
      • Copying 一词让我发帖。让我们看看它是否添加了新内容:)
      • @DuncanJones 同样的原因让我也发布了答案:) 但是,你可能是对的..
      【解决方案5】:

      看起来它不起作用,因为您在 datazscreen_dataz 中使用相同的键(0 和 1)。

      根据official javadocputAll“将替换此映射对当前指定映射中的任何键的任何映射。”,因此您现在丢失了包含在dataz 中的先前对象。

      【讨论】:

        【解决方案6】:
        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);
        

        【讨论】:

          【解决方案7】:

          试试这个

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

          【讨论】:

            猜你喜欢
            • 2017-01-01
            • 2013-01-10
            • 1970-01-01
            • 1970-01-01
            • 2012-06-16
            • 2011-02-01
            • 2015-12-03
            • 2014-03-30
            • 1970-01-01
            相关资源
            最近更新 更多