Jaka jest różnica między ArrayList.clear (), a ArrayList.removeAll ()?

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.

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.