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

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • fouseyTUBE

    fouseyTUBE

    21 Mart 2011
  • Max Lee

    Max Lee

    18 AĞUSTOS 2006