揭秘 HashMap 和 Map 对象之间的区别
在 Java 中,HashMap 和 Map 对象通常看起来可以互换,导致人们对它们的根本差异感到困惑。澄清一下,对象本身没有区别 - 在这两种情况下,您都会获得一个带有 String 键和 Object 值的 HashMap。
区别在于与对象关联的接口。当您将对象声明为 HashMap
让我们探索一个实际示例来说明这个概念:
考虑一个名为 Foo 的类它初始化两个内部映射,things 和 moreThings,并通过访问器方法共享它们。这些映射最初被实现为 HashMap。
现在,假设 Foo 的子类 SpecialFoo 使用通用方法来操作 things 和 moreThings。该方法使用与访问器方法(HashMap
稍后,如果您决定用 TreeMap 替换 Foo 中的 HashMap 实现,SpecialFoo 将遇到编译错误,因为合同被违反了——Foo 现在提供 TreeMaps 而不是 HashMaps。这就需要对 SpecialFoo 进行修订。
为了避免这种情况,谨慎的做法是使用通用接口 Map
针对最通用的接口进行编码通常不那么脆弱且适应性更强。通过遵守这一原则,您可以在对代码库进行更改时保持灵活性并防止出现不可预见的错误。
以上是HashMap 与 Map:什么时候应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!