如何在Java中将一个 HashMap 复制到另一个 HashMap?
HashMap类似于HashTable ,但它是不同步的。它也允许存储空键,但应该只有一个空键对象,并且可以有任意数量的空值。此类不保证地图的顺序。要使用此类及其方法,您需要导入Java.util.HashMap包或其超类。
给定一个 HashMap,可以通过三种方式将给定的HashMap复制到另一个:
- 通过正常迭代并使用 put(k, v) 方法将其放入另一个 HashMap。
- 使用 putAll() 方法。
- 使用复制构造函数。
方法一:通过正常迭代并使用 put(k, v) 方法将其放入另一个 HashMap。
一个简单的解决方案是遍历映射并对另一个映射中的每个映射键和值使用 put(Key,Value) 一次。
Java
// Java program to iterate through the
// first map and put it in the second map
import java.util.HashMap;
import java.util.Map;
class GFG {
public static Map
copyMap(Map original)
{
Map second_Map = new HashMap<>();
// Start the iteration and copy the Key and Value
// for each Map to the other Map.
for (Map.Entry entry : original.entrySet()) {
// using put method to copy one Map to Other
second_Map.put(entry.getKey(),
entry.getValue());
}
return second_Map;
}
public static void main(String[] args)
{
Map hashMap = new HashMap<>();
hashMap.put("A", 1);
hashMap.put("B", 2);
hashMap.put("C", 3);
// copyMap method would copy the original
// hashMap to second_Map
Map second_Map = copyMap(hashMap);
System.out.println(second_Map);
}
}
Java
// Java program to copy hashmap to
// another hashmap using putAll() method
import java.util.HashMap;
import java.util.Map;
class GFG {
public static Map
copyMap(Map original)
{
Map second_map = new HashMap<>();
// using putAll method to copy from original Map to
// second_map
second_map.putAll(original);
return second_map;
}
public static void main(String[] args)
{
Map hashMap = new HashMap<>();
hashMap.put("A", 1);
hashMap.put("B", 2);
hashMap.put("C", 3);
// copyMap method would copy the original
// hashMap to second_Map
Map second_map = copyMap(hashMap);
System.out.println(second_map);
}
}
Java
import java.util.HashMap;
import java.util.Map;
class GFG {
// usimg copy constructor to resturn the original map
// and then copy it in second_map
public static Map copyMap(Map original)
{
// constructor by passing original hashmap
// in the parameter returns the new hashmap
// with the copied content of the original one
return new HashMap<>(original);
}
public static void main(String[] args)
{
Map hashMap = new HashMap<>();
hashMap.put("A", 1);
hashMap.put("B", 2);
hashMap.put("C", 3);
// copyMap method would copy the original
// hashMap to second_Map
Map second_map = copyMap(hashMap);
System.out.println(second_map);
}
}
输出
{A=1, B=2, C=3}
方法二:使用 putAll(k, v) 方法。
Map.putAll(k,v) 方法用于将一个 HashMap 复制到另一个空的 HashMap。
句法:
new_hash_map.putAll(exist_hash_map)
参数:该方法采用一个参数exist_hash_map ,该参数指的是我们要从中复制的现有地图。
返回值:该方法不返回任何值。
异常:如果我们要从中复制的地图为 NULL,则该方法抛出NullPointerException 。
Java
// Java program to copy hashmap to
// another hashmap using putAll() method
import java.util.HashMap;
import java.util.Map;
class GFG {
public static Map
copyMap(Map original)
{
Map second_map = new HashMap<>();
// using putAll method to copy from original Map to
// second_map
second_map.putAll(original);
return second_map;
}
public static void main(String[] args)
{
Map hashMap = new HashMap<>();
hashMap.put("A", 1);
hashMap.put("B", 2);
hashMap.put("C", 3);
// copyMap method would copy the original
// hashMap to second_Map
Map second_map = copyMap(hashMap);
System.out.println(second_map);
}
}
输出
{A=1, B=2, C=3}
方法三:使用复制构造函数。
这是将一个 HashMap 复制到另一个的最短和最简单的方法之一。
我们可以使用复制构造函数来复制映射,这是一种特殊的构造函数,用于创建新对象作为现有对象的副本。
Java
import java.util.HashMap;
import java.util.Map;
class GFG {
// usimg copy constructor to resturn the original map
// and then copy it in second_map
public static Map copyMap(Map original)
{
// constructor by passing original hashmap
// in the parameter returns the new hashmap
// with the copied content of the original one
return new HashMap<>(original);
}
public static void main(String[] args)
{
Map hashMap = new HashMap<>();
hashMap.put("A", 1);
hashMap.put("B", 2);
hashMap.put("C", 3);
// copyMap method would copy the original
// hashMap to second_Map
Map second_map = copyMap(hashMap);
System.out.println(second_map);
}
}
输出
{A=1, B=2, C=3}