为什么Map不扩展Collection接口
问题内容:
为什么java.util.Map
接口不扩展java.util.Collection
接口?不是java.util.Map
键值对的集合吗?
问题答案:
集合假定一个值的元素。映射假定键/值对的条目。他们本来可以重新使用相同的通用接口,但是它们实现的某些方法不兼容,例如
Collection.remove(Object) - removes an element.
Map.remove(Object) - removes by key, not by entry.
您可以将Map建模为条目的集合,这就是这样Map.entrySet()
做的。
有一些共同的方法。size()
,isEmpty()
,clear()
,putAll/addAll()
但这些都不太可能有多少价值作为一个独立的接口。(Map.entrySet()
可以再次使用)