List
への呼び出しによって取得されたサブリストのメソッドを介してa が構造的に変更された場合、インデックスおよびインデックスとリスト要素間の関係はどうなりList.subList(int fromIndex, int toIndex)
ますか?
たとえば、Oracle JVM で見られるような事実上の操作には興味がありません。私はインターフェイスの動作仕様に興味があるので、独自のリスト クラスを確実に実装できます (ここでの信頼性とは、Java のリスト クラスの 1 つを独自のものと交換できることを指します。これは、java.util.List
インターフェイスを実装するという唯一の利点によるものです)。
オラクルによるドキュメントはList
、上記を明らかにしていないようです。注意してください、これは sub-list 以外の方法でリストを変更しようとすることとは何の関係もありません。実際にドキュメントでサポートされているように、これは sub-list onlyによる変更に関するものです。
例:
6 つの要素のリストがあるとしますA, B, C, D, E, F
。リストを呼び出すと、要素B、C、DsubList(1, 4)
を持つサブリストが生成されます。次に、このサブリストを呼び出します。が削除された後にサブリストに含まれる要素を知りたいですか? いくつかの代替案:remove(D)
D
- B、C、E (サブリストは元のインデックス範囲を保持)?
- B、C (事実上、もはや a ではありません
subList(1, 4)
)?
私の推測では、サブリストが指定されたsubList(1, 4)
ので、リスト自体の「ウィンドウ」は同じ「サイズ」でなければならE
ず、ビューの終了インデックスがまだ 4 であるため、いわばビューにスライドします。今でD
はなくなってすぐに伸びていますE
。2 番目の選択肢は、私にはあまり賢明ではないように思えますが、それでも代替案です。