为什么通常Map <X,X> = new HashMap <X,X>()而不是HashMap <X,X> = new HashMap <X,X>()?

Raj*_*pta 2 java collections

可能重复:
当它由类ArrayList而不是接口List表示时,使用foo是否更容易?
为什么大多数示例都使用ArrayList

为什么我们大多数都这样做,像这样:

Map<Integer, String> map = new HashMap<Integer, String>();
Run Code Online (Sandbox Code Playgroud)

而不是:

HashMap<Integer, String> map = new HashMap<Integer, String>();
Run Code Online (Sandbox Code Playgroud)

在实例化ArrayList时类似.

Jes*_*mos 10

减少输入,Map是该类的接口(与List相同),因此传递Map比HashMap更容易,因为功能相同,唯一的区别在于实现.这通常是在某些情况下完成的(在某些情况下),当我们因为某种原因你决定HashMap不是你想要的而你想要使用TreeMap时,但是在你的所有代码中都有HashMap参数并且更改这些参数可能很麻烦.如果您通过Map而不必更改任何内容,您的代码可以更加灵活.

  • 它不仅仅是从一种类型转换到另一种类型(HashMap到TreeMap),而是支持多态性.您应该依赖于契约(接口)而不是对象的内部实现. (4认同)
  • @ewernli我知道我试图举一个例子,所以我想我错过了这一点. (2认同)