Java 7のLinkedList APIを調べていたところ、興味深いことに気付きました。「前(または後)を削除する」タイプの方法はないようです。たとえば、100 要素の LinkedList があり、最初の 20 要素を削除したい場合、Java は、開始ポインターを 21 番目の要素に移動して 20 要素間のリンクを削除するのではなく、一度に 1 つずつ削除するように強制するようです。および21.これは、Javaが強制的に行うように見えるため、O(n)時間ではなく、O(1)時間で実行できる操作のようです。
ここで何かが足りないのでしょうか、それとも Java の明らかな穴ですか?
編集
sublist(int, int)
List インターフェイスのメソッドを認識しています。これは、一般的な「最初 (または最後) の n を切り取る」ユースケースよりもわずかに効率が悪いと思います。
編集2
n番目の要素を見つけることはO(1)ではないことを指摘したすべての人に触れてください。最初の n-1 個の要素を簡単に切り捨てることができるにもかかわらず、n 番目を見つけるのに O(n) 時間かかります。
ただし、Dilum Ranatunga が指摘するように、指定された位置にイテレータが既に存在する可能性があります。この場合、「私はここにいます。私の前にあるものはすべて取り除いてください」と言うと便利です。