Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么通常使用地图<;十、 X>;=新HashMap<;十、 X>;()而不是HashMap<;十、 X>;=新HashMap<;十、 X>;()?_Java_Collections - Fatal编程技术网

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我知道我试图给出一个示例,所以我想我错过了这一点。