我遇到了一段我发现的代码
public class MapImpl {
private static MapImpl mpl = new MapImpl();
Map<String,String> hm;
private MapImpl() {
hm = new HashMap<>();
}
public addContentsToMap(Map<String,String> m){
this.hm=m;
}
public Map returnMap(){
new HashMap<>(hm);
}
}
我想在这里知道,当调用默认构造函数时,map会被初始化为hashmap,而当调用addContentsToMap时,会形成一个带有值的map。
我看到returnMap使用了HashMap的构造函数(Map m)。我已经浏览了HashMap的源代码但是一无所知。
答案 0 :(得分:3)
它需要Map
接口的任何实现,并构造HashMap
,它也是Map
接口的实现。
开发人员喜欢Hash-Collections(HashSet
,HashMap
等),包括HashMap
,因为它们提供了预期的O(1)
get和包含时间。
一旦你的Map
HashMap
不是Properties
(例如Map
)并且你知道它会很大并且你会从中读取它,它会非常有用很多时候,切换到public HashMap(Map<? extends K,? extends V> m)
的不同实现很有用。
m
使用与指定Map相同的映射构造一个新的HashMap。使用默认加载因子(0.75)创建HashMap,初始容量足以保存指定Map中的映射。
<强>参数:强>
NullPointerException
- 其地图位于此地图中的地图<强>抛出:强>
{{1}} - 如果指定的地图为空