在检查Map
和SortedMap
接口时,我注意到许多已经在Map
接口中定义的方法也在SortedMap
.
SortedMap
扩展Map
,为什么要重新声明一些方法,例如:
Set<K> keySet();
Collection<V> values();
为什么会有这种冗余?
(我使用JDK 7)
在检查Map
和SortedMap
接口时,我注意到许多已经在Map
接口中定义的方法也在SortedMap
.
SortedMap
扩展Map
,为什么要重新声明一些方法,例如:
Set<K> keySet();
Collection<V> values();
为什么会有这种冗余?
(我使用JDK 7)
我会说方法是在接口中声明的,方法是在类中定义的。
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
返回:此映射中包含的键的集合视图,按升序排序