2012-11-04 67 views
1

當檢查MapSortedMap接口時,我注意到Map接口中已定義的許多方法也在SortedMap內重新定義(而不是簡單地繼承)。Map和SortedMap - 冗餘方法聲明

SortedMap延伸Map,爲什麼重新聲明一些方法,如,例如:

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

爲什麼這種冗餘?

(我用的JDK 7)

+0

@Bhesh古隆謝謝,有人在鏈接他說:「他們只是爲了方便而重新宣佈它們,這也有助於重新定義這種特殊方法的傑作」。它適合我:) – Mik378

+0

這是正確的鏈接:http://stackoverflow.com/q/13205286/738746。 –

回答

2

我要說的是,方法是在接口中聲明和方法在類中定義。

地圖不能保證排序,但排序地圖是。這意味着每種方法將保證不同並需要不同的文檔。

的Javadoc Map.keySet()突出差異

返回包含在此映射中鍵的Set視圖。該集合由地圖支持,因此對地圖的更改反映在集合中,反之亦然。如果在對集合進行迭代的過程中修改了映射(除了通過迭代器自己的刪除操作),迭代的結果是未定義的。該集支持元素刪除,通過Iterator.remove,Set.remove,removeAll,retainAll和clear操作從映射中刪除相應的映射。它不支持add或addAll操作。

返回: 包含在此映射

的Javadoc SortedMap.keySet()鍵的一組觀點是

返回包含在此映射中鍵的Set視圖。 集合的迭代器按升序返回鍵。該集合由地圖支持,因此對地圖的更改反映在集合中,反之亦然。如果在對集合進行迭代的過程中修改了映射(除了通過迭代器自己的刪除操作),迭代的結果是未定義的。該集支持元素刪除,通過Iterator.remove,Set.remove,removeAll,retainAll和clear操作從映射中刪除相應的映射。它不支持add或addAll操作。

指定者: 的keySet接口地圖

返回: 包含在此映射中的鍵的set視圖,按升序排序