Java MapがCollectionを拡張しないのはなぜですか?
ないことに驚い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、現在は冗長です)。