Java 为什么通常使用地图<;十、 X>;=新HashMap<;十、 X>;()而不是HashMap<;十、 X>;=新HashMap<;十、 X>;()?
可能重复:Java 为什么通常使用地图<;十、 X>;=新HashMap<;十、 X>;()而不是HashMap<;十、 X>;=新HashMap<;十、 X>;()?,java,collections,Java,Collections,可能重复: 为什么我们通常会这样做: Map<Integer, String> map = new HashMap<Integer, String>(); Map Map=newhashmap(); 而不是: HashMap<Integer, String> map = new HashMap<Integer, String>(); HashMap map=newhashmap(); &在实例化ArrayList时类似。更少键入,Map
为什么我们通常会这样做:
Map<Integer, String> map = new HashMap<Integer, String>();
Map Map=newhashmap();
而不是:
HashMap<Integer, String> map = new HashMap<Integer, String>();
HashMap map=newhashmap();
&在实例化ArrayList时类似。更少键入,Map是该类的接口(与List相同),因此传递Map比传递HashMap更容易,因为功能相同。唯一的区别是实现。通常(在某些情况下)是这样做的,比如说,出于某种原因,您决定HashMap不是您想要的,您想使用TreeMap,但在所有代码中都有HashMap参数,更改这些参数可能会很痛苦。如果您传递Map,则无需更改任何内容,而且您的代码可以更加灵活。这不仅是关于从一种类型更改为另一种类型(从HashMap更改为TreeMap),而且还支持多态性。您应该依赖于契约(接口),而不是对象的内部实现。@ewernli我知道我试图给出一个示例,所以我想我错过了这一点。