在 Java 中复制哈希映射

2022-08-31 08:01:53

我正在尝试保留包含成员的类的临时容器:

HashMap<Integer,myObject> myobjectHashMap

一个名为 myobjectsList 的类

然后我做

myobjectsListA = new myobjectsList();
myobjectsListB = new myobjectsList();

然后:向 A 添加一些哈希映射项目(如 2)

然后:

myobjectListB = myobjectListA; //B has 2

然后:将哈希映射项目添加到 A(例如 4 个)

然后:将 A 返回到存储在 B 中的项目

myobjectListA = myobjectListb;

但是当我这样做时,B与A一起增长,而我正在向A添加哈希映射项。A 现在有 6 个项目,因为 B 有 6 个项目。

我希望A在最后一次分配后仍然具有原始的2。C++我会对对象使用复制,那么Java等效项是什么?

补充:好的,我遗漏了一些东西来解释这一点。 不包含 HashMap,它派生自具有 HashMap 成员并扩展 的类。这有什么不同吗?MyObjectsListMyBaseOjbectsListMyObjectsListMyBaseOjbectsList


答案 1

如果你想要一个HashMap的副本,你需要构造一个新的。

myobjectListB = new HashMap<Integer,myObject>(myobjectListA);

这将创建地图的(浅层)副本。


答案 2

您还可以使用

clone()

将所有元素从一个哈希映射复制到另一个哈希映射的方法

用于将所有元素从一个哈希映射复制到另一个哈希映射的程序

import java.util.HashMap;

public class CloneHashMap {    
     public static void main(String a[]) {    
        HashMap hashMap = new HashMap();    
        HashMap hashMap1 = new HashMap();    
        hashMap.put(1, "One");
        hashMap.put(2, "Two");
        hashMap.put(3, "Three");
        System.out.println("Original HashMap : " + hashMap);
        hashMap1 = (HashMap) hashMap.clone();
        System.out.println("Copied HashMap : " + hashMap1);    
    }    
}

来源 : http://www.tutorialdata.com/examples/java/collection-framework/hashmap/copy-all-elements-from-one-hashmap-to-another