2012-03-19 40 views
19

Dictionary ve Hashtable arasındaki fark nedir ve Java'da Dictionary sınıfı ile nasıl çalışırım?Hashtable ve Dictionary arasındaki fark nedir?

+0

Google'da çok iyi şeyler var - http://docs.oracle.com/javase/tutorial/collections/implementations/index.html – Vic

+0

Ve yığın akışında - http://stackoverflow.com/questions/267312/hashmap-and-a-dictionary-adt arasındaki fark- – Vic

+2

Eğer bir seçeneğiniz varsa, 'Dictionary' yerine 'Map' kullanılmalı ve bu artık kullanılmaz. – assylias

cevap

18

DictionaryHashtable bir soyut temel sınıftır. Her ikisi de eski kod ile geriye dönük uyumluluk için hala JDK'da. HashMap ve Java 1.2'de tanıtılan Map arayüzünün diğer uygulamalarını kullanmamız bekleniyor.

+1

Hashtable'ın iş parçacığı güvenli olduğundan bahsetmeye değer, HashMap ise değil. Cevabımı gör. – assylias

+0

Hashtable, Map uygulamasını uygulamak için uyarlandı. – user2864740

2

Aradığın cevap içerir OOP İlkeleri konulu bir konferans buldum:

http://www.clear.rice.edu/comp202/04-fall/lectures/lec23/

DÜZENLEME:

Sözlük bir ana tema içinde bilgi işlem, depolama/geri alma/kaldırma temasıdır: daha sonra alınabilmesi için verileri bir yere saklayın Artık gerekli değilse, tüm bunları en verimli şekilde gösterir. Bu bilgi işlem aktivitelerinin soyutlanması, Java'da bir arabirim olarak ifade edilen, bir sözlük olarak adlandırılan nosyonda somutlaştırılmıştır.

Karma Tablolar Bir karma tablo olağan bir dizinin genelleştirilmesidir. Gerçekte depolanan anahtarların sayısı, olası tuşların toplam sayısına göre küçük olduğunda, karma tablolar tipik olarak anahtar sayısıyla orantılı bir boyut dizisi kullandığından, bir diziyi doğrudan adreslemek için etkili bir alternatif haline gelir aslında depolanır. Anahtarı doğrudan dizi dizini olarak kullanmak yerine, dizi dizini anahtardan hesaplanır. Kesici ile k tuşu ile bir eleman h (k) yuvasına kaydedilir; diğer bir deyişle, bir kesişme fonksiyonu h, yuvayı k tuşundan hesaplamak için kullanılır. > {0, 1, ..., m - 1 -}

2

u: h: s karma tablo T [0..m-1] yuvalarına anahtarlar grubunu U haritalar Sözlük sınıfı, değerlere anahtarları eşleyen Hashtable gibi herhangi bir sınıfın soyut üst öğesidir. Her anahtar ve her değer bir nesnedir. Herhangi bir Sözlük nesnesinde, her anahtar en fazla bir değerle ilişkilendirilir. Bir Sözlük ve bir anahtar verildiğinde, ilgili eleman aranabilir. Boş olmayan herhangi bir nesne bir anahtar ve bir değer olarak kullanılabilir.

14

Cevabınız Dictionary için javadoc cevabınıza sahiptir.

Sözlük sınıfı, değerlere anahtarları eşleyen Hashtable gibi herhangi bir sınıfın soyut üst öğesidir. bir abstract sınıf olduğundan

Sen Dictionary doğrudan çalışmaz.

NOT:

Ayrıca aynı belgelerinden aşağıdakilere dikkat Bu sınıf kullanılmıyor. Yeni uygulamalar bu sınıfı genişletmek yerine Map arayüzünü uygulamalıdır.

3

HashtableDictionary'un bir uygulamasıdır. Soyut bir sınıf olduğu için Dictionary doğrudan kullanamazsınız.

Ancak, Map arabirimi ve HashMap'un en popüler olduğu uygulama sınıfları tarafından aşılandıkları için kullanmamalısınız. Sözlük için javadocs göre

1

:

NOT: Bu sınıf kullanılmıyor. Yeni uygulamalar bu sınıfı genişletmek yerine Harita arayüzünü uygulamalıdır.

Kazanılabilir, JDK 1.0 bağbozumudir. Harita arayüzünü ve daha modern uygulamaları tercih etmelisiniz: HashMap ve TreeMap.

8

Dictionary, Hashtable sınıfının en üst sınıfıdır. obsolete olduğu gibi Dictionary kullanmamalısınız. Hashtable gelince , böyle HashMap gibi diğer haritalarda üzerinde vardı avantajı iplik emniyet, ama Java 1.5 beri ConcurrentHashMap tanıtımıyla, artık kullanmak için hiçbir gerçek neden yoktur - itibarıyla javadoc

bkz Java 2 platformu v1.2, bu sınıf, Harita arayüzünü uygulamaya geçirerek Java Koleksiyonlar Çerçevesinin bir üyesi haline getirildi. Yeni koleksiyon uygulamalarından farklı olarak Hashtable senkronize edildi. İş parçacığı gerektirmeyen bir uygulamaya gerek yoksa, HashMap'in Hashtable yerine kullanılması önerilir. İplik güvenli, yüksek eşzamanlı bir uygulama isteniyorsa, ConcurrentHashMap'in Hashtable yerine kullanılması önerilir. Özetle yılında

: Gerçekten uyumluluk nedenleriyle zorunda sürece haritası eşzamanlı kullanıldığında eğer ConcurrentHashMap iplik güvenlik ihtiyacınız varsa veya yoksa ya HashMap kullanın, Dictionary veya Hashtable kullanmayın ortamı.

İlgili konular