接口Map为什么有内部接口Entry?

4
我正在研究Java类和接口的设计,刚刚看到了java/util/Map.java文件,对于其中的问题我有些疑惑。请您帮助回答以下问题:
为什么Map接口有内部接口Entry
请参考java/util/Map.java源代码并进行回答。

1
请查看此答案:https://dev59.com/Imoy5IYBdhLWcg3wPLn0#8689757 - Buddy
伙计,这不是重复的。 - Narayana Sai
1个回答

2

Map<K,V> 可以视为一种关联存储(即一种将键与其值相连的容器)。它也可以被视为一组成对的集合,其中第一个元素是键,第二个元素是相应的值。

Map<K,V> 中大部分的方法支持地图的关联容器视图。Map.Entry<K,V> 接口用于支持地图的另一种视图 - 作为键值对的集合。

每个映射都提供了访问所谓的 entry set 的方法,它是地图中的一组成对。每个对由 Map.Entry<K,V> 类型的实例表示。

Map<Integer,String> myMap = ...
for (Map.Entry<Integer,String> e : myMap.entrySet()) {
    System.out.println(e.getKey()+" ---> "+e.getValue());
}

可以将 MapEntry<K,V> 接口定义在 Map<K,V> 外部。然而,由于该接口与 Map 非常密切相关,决定将接口嵌套在 map 内部是非常合理的。


根据您的解释,我的理解是,由于它与接口内定义的地图非常密切相关。我是对的吗?谢谢您的回答。 - Narayana Sai
点赞原始JDK中做得好的地方。我不会谈论那些可憎的事情。 - David J. Liszewski
@NarayanaSai 是的,没错。关于“密切相关”的程度没有确切的衡量标准,但一个经验法则是,如果一个类或接口只有在另一个类或接口的上下文中才有意义(例如,映射条目需要它们所属的映射),那么它可能应该是一个嵌套类或接口。 - Sergey Kalinichenko
@dasblinkenlight 谢谢 - Narayana Sai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接