SORU
11 AĞUSTOS 2011, PERŞEMBE


Ne ArrayList arasındaki farktır.() açık ve ArrayList.() removeAll?

arraylist ArrayList<String> arraylist, olarak tanımlandığını varsayarak arraylist.removeAll(arraylist) arraylist.clear() eşdeğerdir?

Eğer öyleyse, bunu temizlemek farz edebilir miyim() yöntemi dizi listesini boşaltmak için daha verimlidir?

arraylist.clear() yerine arraylist.removeAll(arraylist) kullanarak herhangi bir uyarı var mı?

CEVAP
11 AĞUSTOS 2011, PERŞEMBE


Açık kaynak kodu:

public void clear() {
    modCount  ;

    // Let gc do its work
    for (int i = 0; i < size; i  )
        elementData[i] = null;

    size = 0;
}

Tüm kaynak kodu AbstractCollection Olarak kaldırın:

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;
}

Net tüm bu ekstra yöntem çağrıları ile uğraşmak zorunda olmadığından çok daha hızlı.

Ve Atrey belirttiği gibi, c.contains(..) clearaksine O removeAll (n^2) zaman karmaşıklığı artar's O(n).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fuse

    Fuse

    21 Kasım 2005
  • Gigawipf

    Gigawipf

    18 ŞUBAT 2010
  • joshsnice

    joshsnice

    28 Kasım 2006