为什么我们有单独的接口称为Entry,它嵌套在JAVA的映射接口中



我们知道 Map 是一个由类 HashMap、TreeMap 实现的接口......

由于所有这些实现类都具有相同的入口模式(即键值对(, 为什么我们不应该在地图接口本身中拥有这种入口模式?

将此条目模式单独作为嵌套在映射接口中的接口的目的是什么?

提前谢谢。

Map.Entry

封装在Map中的原因是因为它是一个非常亲密的强耦合接口,专门设计为专门用于Map。出于您的意图和目的,您可以将其视为表示Map中单个条目的一对(键和值(。

不同的 Map 实现对如何存储条目有不同的要求。HashMap计算密钥的哈希代码并将其存储在其Node实现中(扩展Map.Entry(,而TreeMapEntry具有父条目,左右子项以及节点的"颜色"等信息(因为它是一棵红黑树(。每个Map实现都有自己的要求,因此Entry保留为接口。

Map接口有一个用途 - 表示键到值的映射。Map.Entry接口有不同的用途 - 表示单个键值对。

为什么我们不应该在地图接口本身中拥有这种入口模式?

如果你的意思是问为什么不直接在Map接口中声明Map.Entry接口的方法,那就没有多大意义了,因为Map包含多个键和值,那么如果getKey()getValue()方法是Map接口的一部分,它们会返回哪个键和值?

此外,当您要迭代Map条目时,Map.Entry接口很有用。调用entrySet()方法并获取Set<Map.Entry<K,V>>

最新更新