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

  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • glowpinkstah

    glowpinkstah

    16 Mayıs 2006
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006