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

  • Bad Lip Reading

    Bad Lip Read

    22 Mart 2011
  • justintimberlakeVEVO

    justintimber

    2 EYLÜL 2009
  • nemoking of kinges

    nemoking of

    4 EYLÜL 2009