27
ArrayList
から最後のオブジェクトをすばやく削除したいと考えています。JavaでArrayListの最後のオブジェクトを削除する
私はremove(Object O)
がArrayList
でO(n)
がかかりますが、私はちょうど最後オブジェクトを削除したいので、一定の時間でこれを行うことが可能である場合、私は疑問に思うことを知っていますか?
ArrayList
から最後のオブジェクトをすばやく削除したいと考えています。JavaでArrayListの最後のオブジェクトを削除する
私はremove(Object O)
がArrayList
でO(n)
がかかりますが、私はちょうど最後オブジェクトを削除したいので、一定の時間でこれを行うことが可能である場合、私は疑問に思うことを知っていますか?
は、次の構文のように、the documentation for ArrayList#remove(int)
を参照してください:ここで
list.remove(list.size() - 1)
は、それが実装されています方法です。 elementData
は、(JVMがオブジェクト参照のサイズとオフセットを計算できるエントリの数を知っているので)一定の時間になるはずのバッキング配列のルックアップを行います(配列から緩やかに切断できます)。numMoved
この場合の0
されています(はlist.size() - 1)
public E remove(int index) {
rangeCheck(index); // throws an exception if out of bounds
modCount++; // each time a structural change happens
// used for ConcurrentModificationExceptions
E oldValue = elementData(index);
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // Let gc do its work
return oldValue;
}
'(int型)' ... ' –
list.removeを削除もあります' !!! – NINCOMPOOP
スタックはここでより良い解決策になりますか? –