gpt4 book ai didi

java - Java 中的 Hashmap 与 Map

转载 作者:行者123 更新时间:2023-12-01 06:56:58 25 4
gpt4 key购买 nike

Possible Duplicate:
Java - HashMap vs Map objects

有什么区别:

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

VS

HashMap <String,Integer> map = new HashMap<String,Integer>();  

问候,罗恩

最佳答案

对象之间没有区别。对象的接口(interface)有所不同。第一种情况,接口(interface)是HashMap<String, Object> ,而第二个是 Map<String, Object> 。不过,底层对象是相同的。

使用 Map<String, Object> 的优势是您可以将底层对象更改为不同类型的映射,而不会破坏与使用它的任何代码的约定。如果您将其声明为 HashMap<String, Object> ,如果你想改变底层的实现,你就必须改变你的合约...

<小时/>

还有Map是 map 的静态类型,而HashMap是动态类型的 map 。这意味着编译器会将您的 map 对象视为 Map 类型之一。 ,即使在运行时,它也可能指向它的任何子类型......

这种针对接口(interface)而不是实现进行编程的做法具有保持灵 active 的额外好处:例如,您可以在运行时替换映射的动态类型,只要它是 Map 的子类型即可。 (例如 LinkedHashMap ),并动态更改 map 的行为。

一个好的经验法则是在 API 级别上尽可能保持抽象:例如,如果您正在编程的方法必须在映射上工作,那么将参数声明为 Map 就足够了。而不是更严格的(因为不太抽象)HashMap类型。这样,API 的使用者就可以灵活选择 Map 类型。他们想要传递给您的方法的实现..

关于java - Java 中的 Hashmap 与 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9528902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com