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

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • kremosakhaz

    kremosakhaz

    25 AĞUSTOS 2006