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.