Zakładając, że arraylist jest zdefiniowany jakoArrayList <String> arraylist, czyarraylist.removeAll(arraylist) jest równoważnearraylist.clear ()?
Jeśli tak, to czy mogę założyć, że metoda clear () jest bardziej wydajna przy opróżnianiu listy tablic?
Czy są jakieś zastrzeżenia dotyczące używania arraylist.removeAll (arraylist) zamiast arraylist.clear ()?
1 odpowiedź
Kod źródłowy dla clear ():
public void clear() {
modCount++;
// Niech gc wykona swoją pracę
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
Kod źródłowy removeAll () (zgodnie z definicją w AbstractCollection):
public boolean removeAll(Collection<?> c) {
boolean modified = false;
Iterator<?> e = iterator();
while (e.hasNext()) {
if (c.contains(e.next())) {
e.remove();
modified = true;
}
}
return modified;
}
clear () jest znacznie szybszy, ponieważ nie musi zajmować się wszystkimi dodatkowymi wywołaniami metod.