Java 中 HashMap 和 Map 的区别
在 Java 中创建 Map 集合时,我们通常使用 HashMap 类。但是,我们也可以将其声明为 Map 接口。这就提出了一个问题:这两种方法有什么区别?
关键区别在于我们对对象的访问类型。使用 HashMap 创建一个具有 HashMap 接口的对象,而 Map 则通过 Map 接口提供相同的对象。在这两种情况下,底层对象保持不变。
使用 Map 接口的优点是能够更改底层实现,而不会破坏与使用它的代码之间的约定。如果映射被声明为 HashMap,则实现中的任何更改都需要更新契约。
为了说明这一点,请考虑包含与子类共享的内部映射的类 Foo 的示例。如果 Foo 使用 HashMap 初始化,并且子类方法使用声明的 HashMap 类型处理 things 和 moreThings,则将 Foo 更改为使用 TreeMap 会破坏代码。
但是,如果 Foo 将 things 和 moreThings 声明为 Map 而不是HashMap,即使实现更改为 TreeMap,Foo 和子类都不会受到影响。
因此,除非有特定原因使用特定实现,否则最好的做法是编写最通用的接口( Java 地图)。这种方法增强了灵活性并确保针对实施变更的弹性。
以上是在 Java 中什么时候应该使用 `HashMap` 和 `Map`?的详细内容。更多信息请关注PHP中文网其他相关文章!