事实Map<?,?>
并非如此,这让我感到惊讶Collection<?>
。
我认为,如果这样声明,那将是很有意义的:
public interface Map<K,V> extends Collection<Map.Entry<K,V>>
毕竟,Map<K,V>
是的集合Map.Entry<K,V>
,不是吗?
那么,为什么没有这样一个充分的理由实现它呢?
感谢Cletus提供的最权威的答案,但是我仍然想知道为什么,如果您已经可以查看Map<K,V>
as Set<Map.Entries<K,V>>
(通过entrySet()
),那么它不仅扩展了该接口。
如果a
Map
是aCollection
,则元素是什么?唯一合理的答案是“键值对”
确实interface Map<K,V> extends Set<Map.Entry<K,V>>
会很棒!
但这提供了非常有限的(且不是特别有用的)
Map
抽象。
但是,如果是这种情况,那么为什么要entrySet
由接口指定?它必须以某种方式有用(我认为很容易为该职位辩护!)。
您既不能询问给定键所映射的值,也不能在不知道给定键所映射的值的情况下删除给定键的条目。
我并不是说这就是全部Map
!它可以并且应该保留所有其他方法(除外entrySet
,现在已经多余了!)!