HashMap(Map m)构造函数做了什么?

时间:2017-08-21 11:21:57

标签: java hashmap

我遇到了一段我发现的代码

  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的源代码但是一无所知。

1 个答案:

答案 0 :(得分:3)

它需要Map接口的任何实现,并构造HashMap,它也是Map接口的实现。

开发人员喜欢Hash-Collections(HashSetHashMap等),包括HashMap,因为它们提供了预期的O(1) get和包含时间。

一旦你的Map HashMap不是Properties(例如Map)并且你知道它会很大并且你会从中读取它,它会非常有用很多时候,切换到public HashMap(Map<? extends K,? extends V> m)的不同实现很有用。

Documentation:

  

m

     

使用与指定Map相同的映射构造一个新的HashMap。使用默认加载因子(0.75)创建HashMap,初始容量足以保存指定Map中的映射。

     

<强>参数:

     

NullPointerException - 其地图位于此地图中的地图

     

<强>抛出:

     

{{1}} - 如果指定的地图为空