ないことに驚いMap<?,?>
たCollection<?>
。
それがそのように宣言されていれば、それは意味のあることだと思いました。
public interface Map<K,V> extends Collection<Map.Entry<K,V>>
結局のところ、Map<K,V>
はのコレクションMap.Entry<K,V>
ですよね。
それがそのように実装されていない理由はありますか?
最も権威のある答えをCletusのおかげで、私はまだ、なぜ、あなたはすでに見ることができた場合に思ったんだけどMap<K,V>
としてSet<Map.Entries<K,V>>
(経由entrySet()
)、それだけではなく、そのインタフェースを拡張しません。
a
Map
がの場合Collection
、要素は何ですか?唯一の合理的な答えは「キーと値のペア」です
まさに、interface Map<K,V> extends Set<Map.Entry<K,V>>
素晴らしいでしょう!
しかし、これは非常に限られた(そして特に有用ではない)
Map
抽象化を提供します。
しかし、その場合は、なぜentrySet
インターフェースによって指定されるのでしょうか。それはどういうわけか有用であるに違いありません(そして私はその立場について議論するのは簡単だと思います!)。
特定のキーがどの値にマップされているかを確認したり、特定のキーのエントリを削除したりすることはできません。
それがすべてであると言っているわけではありませんMap
!それは他のすべてのメソッドを保持でき、保持する必要があります(ただしentrySet
、現在は冗長です)。