如何在Java中克隆地图
给定一张地图,任务是克隆该地图。
以下是在Java中克隆地图的 5 种不同方法。
例子:
{1=Geeks, 2=For, 3=Geeks}
1. 为类映射创建一个对象。
2. 使用 put() 方法将元素放入地图中。
3. 再次为类映射创建另一个对象。
4. 现在最后迭代地图并调用 put 方法克隆初始地图。
下面是上述方法的实现:
执行:
// Program to clone a Map in Java
// Naive Method
import java.util.*;
class GFG {
public static void main(String[] args)
{
// Creating an object for class Map
Map hash_Map
= new HashMap();
// putting elements into the map
hash_Map.put(1, "Geeks");
hash_Map.put(2, "For");
hash_Map.put(3, "Geeks");
// Creating a new object for
// class Map to clone a map
Map new_map
= new HashMap();
// using iterator
for (Map.Entry entry : hash_Map.entrySet()) {
new_map.put(entry.getKey(),
entry.getValue());
}
System.out.println(new_map);
}
}
输出:
{1=Geeks, 2=For, 3=Geeks}
1. 为类映射创建一个对象。
2. 使用 put() 方法将元素放入地图中。
3. 再次为类映射创建另一个对象。
4. 现在最后使用 putAll() 方法克隆初始地图。
下面是上述方法的实现:
执行:
// Program to clone a Map in Java
// putAll Method
import java.util.*;
class GFG {
public static void main(String[] args)
{
// Creating an object for class Map
Map hash_Map
= new HashMap();
// Putting elements into the map
hash_Map.put(1, "Geeks");
hash_Map.put(2, "For");
hash_Map.put(3, "Geeks");
// Creating a new object
// for class Map to clone a map
Map new_map
= new HashMap();
// using putAll method
new_map.putAll(hash_Map);
System.out.println(new_map);
}
}
输出:
{1=Geeks, 2=For, 3=Geeks}
1. 为类映射创建一个对象。
2. 使用 put() 方法将元素放入地图中。
3. 再次为类映射创建另一个对象。
4. 现在最后使用复制构造函数(它是一个特殊的构造函数,用于创建一个新对象作为现有对象的副本)来克隆初始映射。
下面是上述方法的实现:
执行:
// Program to clone a Map in Java
// Copy Constructor
import java.util.*;
class GFG {
public static void main(String[] args)
{
// Creating an object for class Map
Map hash_Map
= new HashMap();
// putting elements into the map
hash_Map.put(1, "Geeks");
hash_Map.put(2, "For");
hash_Map.put(3, "Geeks");
// Creating a new object
// for class Map to clone a map
Map new_map
= new HashMap();
new_map = new HashMap<>(hash_Map);
System.out.println(new_map);
}
}
输出:
{1=Geeks, 2=For, 3=Geeks}
1. 为类映射创建一个对象。
2. 使用 put() 方法将元素放入地图中。
3. 再次为类映射创建另一个对象。
4. 现在终于使用Java 8 中的 Stream API 来克隆初始地图。
下面是上述方法的实现:
执行:
// Program to clone a Map in Java
// Using java8
import java.util.*;
import java.util.stream.Collectors;
class GFG {
public static void main(String[] args)
{
// Creating an object for class Map
Map hash_Map
= new HashMap();
// putting elements into the map
hash_Map.put(1, "Geeks");
hash_Map.put(2, "For");
hash_Map.put(3, "Geeks");
// Creating a new object
// for class Map to clone a map
Map new_map
= new HashMap();
new_map
= hash_Map.entrySet()
.stream()
.collect(
Collectors
.toMap(Map.Entry::getKey,
Map.Entry::getValue));
System.out.println(new_map);
}
}
输出:
{1=Geeks, 2=For, 3=Geeks}
说明:也和上面的方法类似,但是这里我们使用Java 8 的 Stream API 来克隆原始地图。
1. 为类映射创建一个对象。
2. 使用 put() 方法将元素放入地图中。
3. 再次为类映射创建另一个对象。
4. 现在终于用谷歌的GSON库来克隆初始地图了。
下面是上述方法的实现:
执行:
// Program to clone a Map in Java
// JSON Method
import java.util.*;
import java.util.stream.Collectors;
import com.google.gson.Gson;
class GFG {
public static void main(String[] args)
{
// Creating an object for class Map
Map hash_Map
= new HashMap();
// putting elements into the map
hash_Map.put(1, "Geeks");
hash_Map.put(2, "For");
hash_Map.put(3, "Geeks");
// Creating a new object
// for class Map to clone a map
Map new_map
= new HashMap();
Gson gson = new Gson();
String jsonString = gson.toJson(hash_Map);
new_map = gson.fromJson(jsonString, Map.class);
System.out.println(new_map);
}
}
输出:
{1=Geeks, 2=For, 3=Geeks}
说明:也和上面的方法类似,但是这里我们使用谷歌的GSON库来克隆原始地图。在这里,我们最初将 Map 转换为 JSON字符串,然后将该字符串转换为新地图。