1

インターフェースを調べてみるMapと、SortedMapインターフェース内ですでに定義されている多くのメソッドが、内で再定義されているMap(単に継承されていない)ことに気づきましたSortedMap

SortedMap拡張Map、たとえば次のようないくつかのメソッドを再宣言する理由:

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

なぜこの冗長性?

(私はJDK 7を使用しています)

4

1 に答える 1

2

メソッドはインターフェースで宣言され、メソッドはクラスで定義されていると言えます。

マップは注文されることが保証されていませんが、ソートされたマップは注文されます。これは、各方法が保証するものが異なり、異なるドキュメントが必要であることを意味します。

Map.keySet()のJavadocは、違いを強調しています

このマップに含まれるキーのセットビューを返します。セットはマップに裏打ちされているため、マップへの変更はセットに反映され、その逆も同様です。セットに対する反復の進行中にマップが変更された場合(イテレーター自体の削除操作を除く)、反復の結果は未定義です。セットは、Iterator.remove、Set.remove、removeAll、retainAll、およびclear操作を介して、マップから対応するマッピングを削除する要素の削除をサポートします。addまたはaddAll操作はサポートされていません。

戻り値:このマップに含まれるキーのセットビュー

SortedMap.keySet()のJavadocは

このマップに含まれるキーのセットビューを返します。セットのイテレータは、キーを昇順で返します。セットはマップに裏打ちされているため、マップへの変更はセットに反映され、その逆も同様です。セットに対する反復の進行中にマップが変更された場合(イテレーター自体の削除操作を除く)、反復の結果は未定義です。セットは、Iterator.remove、Set.remove、removeAll、retainAll、およびclear操作を介して、対応するマッピングをマップから削除する要素の削除をサポートします。addまたはaddAll操作はサポートされていません。

指定:インターフェイスマップのkeySet

戻り値:このマップに含まれるキーのセットビュー。昇順で並べ替えられます

于 2012-11-04T07:39:59.293 に答える