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

Rya*_*yan 5 java hashmap map

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

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

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

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

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

public void method(Map map){

}
Run Code Online (Sandbox Code Playgroud)

Ali*_*ani 7

没有潜在的差异.它更多的是关于界面.使用a有一个优点Map,就是你可以将对象更改为另一种类型,Map而不会破坏使用它的代码合同.

HashMap是的实现Map,这是Java Collections Framework的一部分.如果你决定使用HashMap,然后另一方希望有不同的东西,比如LinkedHashMap(保留迭代顺序),那么你必须改变一切.这是一个图表(礼貌ProgramCreek).

在此输入图像描述

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

在此输入图像描述


tbo*_*odt 6

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