SORU
23 EYLÜL 2009, ÇARŞAMBA


Hashset vs Treeset

Her zaman ağaçlar, güzel O(n*lg(n)) ve düzeninden sevdim. Ancak, tanıdığım her yazılım mühendisi TreeSet kullanırdım iğneli beni istedi. CS arka plan, kullandığınız o kadar önemli olduğunu sanmıyorum, ve karma işlevler ve kovaları (Java) ile Çalkala umurumda değil.

Hangi durumlarda TreeSet HashSet Bir kullanmalıyım?

CEVAP
16 Aralık 2010, PERŞEMBE


HashSet TreeSet (sürekli-zamana karşı-time günlük en işlemleri için Ekle, Kaldır ve içerir) çok daha hızlı ama TreeSet gibi sipariş garanti sunuyor.

HashSet

  • sınıf temel işlemler için, sürekli performans (ekleme, kaldırma içerir ve boyutu vardır.
  • öğelerin sırasını hep sabit kalacağını garanti etmez
  • yineleme performans bağlıdırbaşlangıç kapasitesiveyük faktörübu HashSet.
    • Oldukça güvenli varsayılan yük faktörü kabul ama hangi dizi büyümek için beklediğiniz yaklaşık iki katı büyüklükte bir başlangıç kapasitesi belirtmek isteyebilirsiniz.

TreeSet

  • garanti log(n) temel işlemler için maliyet (Ekle ve kaldır içerir) zaman
  • kümesinin elemanları garanti sıralanır (artan, doğal, ya da biri tarafından belirtilen kurucusu) (uygular SortedSet)
  • yineleme performans için herhangi bir ayarlama parametreleri sunmuyor
  • birkaç kullanışlı bir yöntemfirst(), last(), headSet(), tailSet() vb gibi sıralanmış başa sunmaktadır

Önemli noktalar:

  • Hem garanti yinelenen-ücretsiz öğeleri koleksiyonu
  • Genellikle HashSet için öğeler eklemek için daha hızlı ve daha sonra yinelenen-ücretsiz sıralanmış bir geçiş için bir TreeSet toplama dönüştürmek.
  • Bu uygulama hiçbiri eşitlenir. Birden çok iş parçacığı bir dizi eş zamanlı erişim, ve en azından parçacığı dışarıdan senkronize olmalı kümesini değiştirir.
  • LinkedHashSetbiraz mantıklı HashSet TreeSet arasında ara. Bağlantılı bir liste ile çalışan karma tablo olarak uygulanan, ancakekleme-sipariş sağlar sıralanmış geçişi TreeSet tarafından garanti olarak aynı değildir yineleme.

Kullanımı çok seçim tamamen sizin ihtiyaçlarınıza bağlıdır ama eğer sıralı bir koleksiyon daha sonra ihtiyacın olursa bile hala oluşturmak ve TreeSet haline dönüştürmektir HashSet tercih ederdim.

  • SortedSet<String> s = new TreeSet<String>(hashSet); ör

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • ShoSho

    ShoSho

    20 Ocak 2010
  • stokelycalm

    stokelycalm

    28 Aralık 2010