3

1 つの Collection の変更が他の Collection に影響を与えるため、これらのメソッドは Backed Collection を返します。[一種のライト スルー プロセス]

headSet(e, b)     Returns a subset ending at element e and exclusive of e

headMap(k, b)     Returns a submap ending at key k and exclusive of key k

tailSet(e, b)     Returns a subset starting at and inclusive of element e

tailMap(k, b)     Returns a submap starting at and inclusive of key k

subSet(s, b, e, b)    Returns a subset starting at element s and ending just before element e

subMap(s, b, e, b)    Returns a submap starting at key s and ending just before key e

Arrays.asList()では、メソッドとの違いは何ですか?このメソッドは、配列を List にコピーします。API は、「返されたリストへの変更は、配列に「ライト スルー」し、その逆も同様です」と述べています。

では、これも Backed Collection ですか?もしそうなら、List インターフェイスに toArray() メソッドがあります -- それも Backed Collection ですか?

Arrays.asList()ライトスルーを許可するような他の方法はありますか? メソッドのシグネチャを見るだけで、メソッドがライトスルーを許可しているかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

8

はい、Arrays.asList配列に基づくリストを返します。これは、コピーを作成するのではなく、コピーを作成するCollection.toArrayため、コレクションに基づくものではありません。

メソッドがその入力に裏打ちされたコレクションを返すかどうかは、署名だけではわかりません。ドキュメントだけではわかりません。通常、「backed by」、「view」などの言葉を使用して文書化されています。、などの多くのList.subListCollections.newSetFromMapと、サードパーティ ライブラリの無数の例があります。

于 2012-05-17T13:22:14.593 に答える