SORU
6 EKİM 2010, ÇARŞAMBA


Anahtar kümesi için performans değerlendirmeleri() ve entrySet() Haritası

Hepsi bu

Kimse bana performans sorunları tam olarak 2 arasındaki bildirin lütfen olabilir? Site : CodeRanch anahtar kümesi kullanırken ihtiyaç duyulacak iç aramalar kısa bir genel bakış sağlar() ve get(). Ama eğer anahtar kümesi zaman akışı hakkında kesin bilgiler verebilir eğer çok iyi olurdu() ve get() yöntemleri kullanılır. Bu benim performans sorunları daha iyi anlamasına yardımcı olur.

CEVAP
6 EKİM 2010, ÇARŞAMBA


EntrySet kullanarak anahtar kümesi üzerinde tercih edilir en sık görülen davanın bir Harita anahtar/değer çiftleri tüm yineleme olmasıdır.

Bu daha verimli

for (Map.Entry entry : map.entrySet()) {
    Object key = entry.getKey();
    Object value = entry.getValue();
}

daha:

for (Object key : map.keySet()) {
    Object value = map.get(key);
}

Çünkü ikinci durumda, her anahtar anahtar kümesi map.get() yöntemi çağrılır, hangi durumda bir HashMap gerektiren hashCode() equals() yöntemlerin anahtar nesne değerlendirilmesi amacıyla bulmak için ilişkilendirilmiş değeri*. İlk durumda ekstra iş ortadan kalkar.

Edit: Bu daha da kötü olmadığını düşündüğünüz bir TreeMap, bir ara O(log2(n)), yani karşılaştırma için veya daha log2(n) kez (n = boyutu Göster) önce bulmak ilişkili değer.

Bazı *uygulamaları nesneleri kontrol İç optimizasyon' hashCode() equals() önce kimlik denir. Haritası

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • finalcall07

    finalcall07

    11 NİSAN 2008
  • KoreanFrogMania님의 채널

    KoreanFrogMa

    18 Aralık 2011