【发布时间】:2019-05-26 23:36:14
【问题描述】:
我想弄清楚这两种方法的优缺点。
我试图在此处和其他一些网站上找到有关此内容的信息,但没有找到此特定信息。
import java.util.HashMap;
import java.util.Map;
public class Maps {
private Map<Integer, String> map = new HashMap<>();
private HashMap<Integer, String> map2 = new HashMap<>();
private Map<Integer, String> map3 = new HashMap<>();
private void initialization() {
map.put(1, "Hello");
map.put(2, "everyone!");
map.put(3, "Nice to");
map.put(4, "meet you");
}
public static void main(String[] args) {
Maps exe = new Maps();
exe.initialization();
exe.map2.putAll(exe.map);
exe.map3 = (Map<Integer, String>) exe.map2.clone();
System.out.println(exe.map2.values());
System.out.println(exe.map3.values());
}
}
我得到了相同的结果,但我对在什么情况下应该使用一种或另一种方法感兴趣。
【问题讨论】:
-
他们根本不做同样的事情。 putAll 将一个地图的所有元素放入另一个地图。 clone 创建地图的副本(克隆)。在一张纸上写东西和复印一张纸之间也有同样的区别。
-
您正在使用两种不同的方法来完成同一件事。但是请考虑
map2是否已经包含三个元素,然后您使用了addAll。那么map2和map3将不相等