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

标签 java map hashmap

<分区>

下面两个声明语句有什么区别:

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

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

在这种特殊情况下使用接口(interface) Map 而不是 HashMap 有什么好处?

在下面的情况下,Map 肯定更好,因为该方法可以接受不同类型的 map 吗?(如果有意的话)

public void method(Map map){

}

最佳答案

没有根本的区别。它更多的是关于界面。不过,使用 Map 有一个优点,即您可以将对象更改为另一种 Map,而不会破坏使用它的代码的约定。

HashMapMap 的一个实现,它是 Java 集合框架的一部分。如果您决定使用 HashMap,而另一方希望使用不同的东西,例如 LinkedHashMap(保留迭代顺序),那么您必须改变周围的情况。这是一张图表(由 ProgramCreek 提供)。

enter image description here

如果您关心性能,还有其他因素,例如计算时间复杂度。这是一张有用的小 table 。选择正确的事情是设计和需求的问题,即你想做什么。它因项目而异。

enter image description here

关于java - 使用 Map 和 HashMap 作为声明类型的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793609/

相关文章:

java - Moshi 找不到我用 Kotlin 为参数化类型编写的自定义适配器

java - 重新初始化 Play 吗啡后 findAll 失败

java - android中的应用程序名称中心对齐

c++ - 如何使用映射C++中的值获取匹配键

java - 在根据值对 map 进行排序时,一些值丢失了。是什么导致了这种奇怪的行为?

java - Java 中的 map 和集合

java - 应该如何将 tomcat 与现有项目一起使用?

java - 是否有强制执行最终键的 Java Map 实现?

java - Drools 规则取决于来自 JDK Map 的知识(不在非 JDK 类中)

java - 按日期对 HashMap 进行排序