【问题标题】:Map and SortedMap - redundant methods declarationMap 和 SortedMap - 冗余方法声明
【发布时间】:2012-10-24 09:12:10
【问题描述】:

在检查MapSortedMap 接口时,我注意到Map 接口中已经定义的许多方法也在SortedMap 中重新定义(而不是简单地让继承)。

SortedMap 扩展 Map,为什么要重新声明一些方法,例如:

Set<K> keySet();
Collection<V> values();

为什么会有这种冗余?

(我使用 JDK 7)

【问题讨论】:

  • @Bhesh Gurung 谢谢,链接帖子中的某个人说:“他们只是为了方便而重新声明它们。这也有助于重新定义该特定方法的 javadocs”。它适合我:)
  • 这是正确的链接:stackoverflow.com/q/13205286/738746

标签: oop collections map java


【解决方案1】:

我会说方法在接口中声明,方法在类中定义。

Map 不保证是有序的,但 Sorted Maps 是。这意味着每种方法所保证的内容是不同的,并且需要不同的文档。

Map.keySet() 的 Javadoc 突出了差异

返回此映射中包含的键的 Set 视图。集合由地图支持,因此对地图的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(通过迭代器自己的删除操作除外),则迭代的结果是不确定的。该集合支持元素移除,即通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的映射。它不支持 add 或 addAll 操作。

返回: 此地图中包含的键的集合视图

SortedMap.keySet() 的 Javadoc 是

返回此映射中包含的键的 Set 视图。 集合的迭代器按升序返回键。集合由映射支持,因此对映射的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(通过迭代器自己的删除操作除外),则迭代的结果是不确定的。该集合支持元素移除,即通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的映射。它不支持 add 或 addAll 操作。

指定者: 接口Map中的keySet

返回: 此地图中包含的键的集合视图,按升序排序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2023-01-16
    相关资源
    最近更新 更多