Vedi the documentation for ArrayList#remove(int)
, come nel seguente sintassi:
list.remove(list.size() - 1)
Ecco come è implementato. elementData
esegue una ricerca sull'array di supporto (in modo che possa essere rimosso dall'array), che dovrebbe essere costante (poiché la JVM conosce le dimensioni di un riferimento a un oggetto e il numero di voci che può calcolare l'offset) e numMoved
è 0
per questo caso:
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;
}
fonte
2013-06-07 15:29:31
C'è anche 'remove (int)' '... –
list.remove (list.size() - 1)' !!! – NINCOMPOOP
Uno stack sarebbe una soluzione migliore qui? –