【问题标题】:whats the different between when i create object from map and hashmap [duplicate]当我从map和hashmap创建对象时有什么区别[重复]
【发布时间】:2012-12-09 17:59:14
【问题描述】:

可能重复:
Java - HashMap vs Map objects

两者有什么区别

private Map<String, Integer> drawableMap = new HashMap<String, Integer>();

private HashMap<String, Integer> drawableMap = new HashMap<String, Integer>();

【问题讨论】:

标签: java map hashmap


【解决方案1】:

赋值表达式左侧的变量类型与对象创建无关;因此,在这两种情况下,您都在创建完全相同的对象。由于在 Java 中您只能将对象的 reference 存储到变量中,因此该变量的类型限制了该变量可以引用的对象类型。在第一种情况下,它可以引用任何实现Map 的对象;在第二种情况下,只接受HashMap 对象。

另一个后果是,在第一种情况下,您只能调用在Map 接口中声明的HashMap 的方法,而在第二种情况下,您可以调用特定于HashMap 实现的任何其他方法。

在大多数实际情况下,您会更喜欢第一种情况,因为您几乎不需要特定于实现的方法。同样的规则也适用于完整的集合框架。

【讨论】:

    【解决方案2】:

    在第一个示例中,您可以稍后将drawableMap 分配给Map 的其他实现(例如LinkedHashMap)。在第二个示例中,您不能 - 您仅限于 HashMaps(及其任何子类)。一般来说,第一种方法比第二种方法更受欢迎,因为它可以提供更大的灵活性。

    最终,第一条语句创建了一个type Map 的变量,它是HashMap 的一个实例。第二个创建一个 type HashMap 的变量,它也是 HashMap 的一个实例。

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 2019-03-10
      • 2019-12-03
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多