我知道List
和Map
是可以实现的接口,ArrayList
和HashMap
是可以创建和使用其对象的类。
我知道两对之间的区别。 我的实际问题是,以下两个陈述之间是否存在差异?
HashMap< K, V> myMap = new HashMap<K, V>();
Map< K, V> myMap = new HashMap<K, V>();
如果有,那么有什么区别,什么时候应该使用哪一个? 同样,有什么区别:
ArrayList< Integer> myList = new ArrayList<Integer>();
List< Integer> myList = new ArrayList<Integer>();
先谢谢..!
答案 0 :(得分:2)
HashMap< K, V> myMap = new HashMap();
正在创建HashMap
的实例,正如您在Java中看到的那样。
在哪里
Map< K, V> myMap = new HashMap();
使用具体植入创建Map
的实例,称为带接口编程。
第二种方式,即Programming with interfaces,为您的程序带来模块性。
这里有一个很好的解释,关于什么是好处以及什么时候去做。
喜欢阅读:What is the benefit of polymorphism using Collection interface to create ArrayList object?
答案 1 :(得分:1)
ArrayList
是List
接口的具体实现。
所以区别在于你有一个具体的类引用,其他你有接口引用。
HashMap< K, V> myMap = new HashMap<K, V>(); //reference of concrete class HashMap
Map< K, V> myMap = new HashMap<K, V>(); //reference of interface Map
您应该始终尝试使用界面进行编程
注意:当您传递时,应使用带接口的程序 其他地方的
Map
,对于局部变量,您可以免费使用具体 实施
其他不同之处在于,在Map
上,您将无法调用HashMap
的方法