Map<Integer,String> map = new HashMap<Interger,String>();
HashMap<Integer,String> map = new HashMap<Interger,String>();
这两种构造方法有什么不同么,分别在什么时候用呢

解决方案 »

  1.   

    第一种以接口类型定义map,方便以后修改。
    比如你现在使用的是HashMap,如果以后希望使用Hashtable,那只需要修改
    Map<Integer,String> map = new HashMap<Interger,String>();
    后面一个地方
      

  2.   

    第一个是父类引用指向子类对象,第二个是本类引用指向本类对象,都是一个样子。
    第一种较好。第一种实际上是用了多态,也就是动态绑定,在运行期根据对象的实际类型调用其方法,也就是HashMap中的方法,假如java不存在多态的话,第一种只能调用Map的方法,因为这个引用指向的是子类对象中的父类对象。我说第一种好的原因就是,假如你用HashMap后悔了的话,想用TreeMap,只需要改构造那里就行了。多去看看多态的好处,可以说没有多态的话面向对象也不会发展到现在
      

  3.   

    没什么不同,创建的HashMap对象都是一样的对象,只是一个全部引用,一个部分引用。
      

  4.   


    在效率上,没有什么不同。但是推荐用下一中方法。 因为你一眼就知道map是HashMap,而不是什么其它的mappublic void a(Map);
    public void a(HashMap);
    这2个推荐用第一个写法,应为什么map都可以传递进来使用
      

  5.   


    Map<Integer,String> map = new HashMap<Interger,String>();
    HashMap<Integer,String> map = new HashMap<Interger,String>()
    map = new HashMap();//用这个就行了,用的都是一样
    //Map是一个接口,HashMap类实现了这个接口