Map和SortedMap - 冗余方法声明

时间:2012-11-04 07:06:48

标签: oop collections map java

在检查MapSortedMap接口时,我注意到Map接口中已定义的许多方法也在SortedMap内重新定义(不仅仅是继承)

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

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

为什么会出现这种冗余?

(我使用JDK 7)

1 个答案:

答案 0 :(得分:2)

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

不保证订购地图,但排序地图是。这意味着每种方法保证的是不同的,需要不同的文档。

Map.keySet()的Javadoc 突出显示差异

  

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

     

返回:      此地图中包含的键的设置视图

SortedMap.keySet()的Javadoc是

  

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

     

指定人:       接口Map中的keySet

     

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