web-dev-qa-db-ja.com

JavaのArrayListの最後のオブジェクトを削除

ArrayListから最後のオブジェクトをすばやく削除したい。

remove(Object O)ArrayListO(n)を取ることを知っていますが、lastオブジェクト?

32

次の構文のように、 ArrayList#remove(int)のドキュメント を参照してください。

list.remove(list.size() - 1)

実装方法は次のとおりです。 elementDataは、バッキング配列をルックアップします(したがって、配列からそれを切り離すことができます)。これは、一定の時間でなければなりません(JVMはオブジェクト参照のサイズと計算できるエントリ数を知っているため)オフセット)、およびnumMoved0この場合:

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;
}
67
Nathan Hughes

単に使用します。

arraylist.remove(arraylist.size() - 1)
0
Deva