Java 将Map和HashMap用作声明类型的区别
以下两种声明的区别是什么:Java 将Map和HashMap用作声明类型的区别,java,map,hashmap,Java,Map,Hashmap,以下两种声明的区别是什么: HashMap<Character, Character> map = new HashMap<Character, Character>(); Map<Character, Character> map = new HashMap<Character, Character>(); 第二个版本是首选的,因为如果您想稍后编写代码以将map更改为不同类型的map,则需要使用第二个版本。但这确实是个人偏好的问题。根本没有区
HashMap<Character, Character> map = new HashMap<Character, Character>();
Map<Character, Character> map = new HashMap<Character, Character>();
第二个版本是首选的,因为如果您想稍后编写代码以将
map
更改为不同类型的map
,则需要使用第二个版本。但这确实是个人偏好的问题。根本没有区别。更多的是关于界面。但是,使用映射
有一个优点,即您可以将对象更改为不同类型的映射
,而不会破坏使用它的代码的契约
HashMap
是Map
的一个实现,它是Java集合框架的一部分。如果您决定使用HashMap
,而另一方希望得到一些不同的东西,比如LinkedHashMap
(保留迭代顺序),那么您必须改变情况。这是一张图表(由克里克提供)
如果您关心性能,还可以考虑计算时间复杂性。这里有一张小桌子,可以用。选择正确的东西是一个设计和需求的问题,即你想做什么。它因项目而异
从面向对象的角度来看,在编译过程中, 该方法是绑定引用类类型, 所以HashMap map=newhashmap(); 您可以使用hashMap方法,包括实现映射和扩展映射。但是 Map Map=newhashmap();
您只能使用map中声明的方法。不能使用hashMap方法。第二个问题的答案是“是”,原因如下所述。第一个问题的答案是肯定的,因为它在第二个问题中强制执行正确的行为(您不能编写接受
HashMap
然后尝试传递Map
的方法,编译器不会允许您这样做。)
public void method(Map map){
}