使用Map和HashMap作为声明类型的区别

时间:2013-12-27 01:44:53

标签: java map hashmap

以下两个声明声明之间的区别是什么:

HashMap<Character, Character> map = new HashMap<Character, Character>();

Map<Character, Character> map = new HashMap<Character, Character>();

在这种特殊情况下使用界面Map而不是HashMap的任何好处?

在下面的例子中,Map肯定更好,因为该方法可以接受不同类型的地图吗?(如果是这样的话)

public void method(Map map){

}

3 个答案:

答案 0 :(得分:6)

没有潜在的差异。它更多的是关于界面。使用Map的优点是,您可以将对象更改为Map的不同类型,而不会违反使用它的代码合同。

HashMapMap的实现,它是Java Collections Framework的一部分。如果你决定使用HashMap然后另一方希望有不同的东西,比如LinkedHashMap(保留迭代顺序),那么你必须改变一些事情。这是一张图表(由ProgramCreek提供)。

enter image description here

如果你关心性能,还有其他一些事情,比如计算时间的复杂性。这是一个有用的小桌子。选择正确的东西是设计和需求的问题,即你想做什么。它因项目而异。

enter image description here

答案 1 :(得分:5)

第二个版本是首选版本,因为如果您想稍后编写代码以将map更改为其他类型的Map,则需要使用第二个版本。但这确实是个人偏好的问题。

答案 2 :(得分:0)

从面向对象的角度来看,在编译期间, 该方法是绑定引用类类型, 所以HashMap map = new HashMap(); 你可以使用我们的hashMap方法,包括实现映射和扩展。但是, Map map = new HashMap(); 您只能使用map中声明的方法。不能使用hashMap方法。