-2 java
有什么区别?请看下面.
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
Run Code Online (Sandbox Code Playgroud)
和
Map<Integer, String> hashMap = new HashMap<Integer, String();
Run Code Online (Sandbox Code Playgroud)
它们可以互换吗?
A Map<K, V>是接口,a HashMap<K, V>是实现接口的类.
我总是喜欢第二个选项,除非你特别想要一个charasterics HashMap<K, V>.
使用后一种方法,可以轻松地切换出HashMap<K, V>另一种实现方式Map<K, V>.
以List<E>vs ArrayList<E>方法为例:
ArrayList<E> list = new ArrayList<>(),则无法轻松将其更改为a LinkedList<>(),因为ArrayList<E> list = new LinkedList<>()无法编译.List<E> list = new ArrayList<>(),则可以随时将其切换为a LinkedList<>().假设您有一种接受a的方法List<E>,那么您应该怎么做?
void method(ArrayList<E> list);void method(List<E> list)现在List<E>,当您不关心列表的类型时,您通常总是希望它是a ,而您只关心List<E>界面中可用的操作.
但是,在某些情况下,您可能希望强制执行持续的访问时间,在这种情况下,只允许您的方法接受ArrayList<E>是非常有意义的,因为该实现提供了持续的访问时间.