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?
cevap
Dictionary
Hashtable
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.
Hashtable'ın iş parçacığı güvenli olduğundan bahsetmeye değer, HashMap ise değil. Cevabımı gör. – assylias
Hashtable, Map uygulamasını uygulamak için uyarlandı. – user2864740
Aradığın cevap içerir OOP İlkeleri konulu bir konferans buldum:
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 -}
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.
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.
Hashtable
Dictionary
'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
:
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.
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ı.
- 1. DictionaryBase ve Dictionary Arasındaki Fark <Tkey,Tvalue>
- 2. Python'da {} ve [] arasındaki fark nedir?
- 3. UNIX'teki $ @ ve $ * arasındaki fark nedir?
- 4. $ arasındaki fark nedir? ve PowerShell
- 5. Bir dizi, hashtable ve sözlük oluştur?
- 6. Fark() arasındaki fark nedir mustache.js
- 7. arasındaki fark nedir?
- 8. Java arasındaki fark nedir
- 9. arasındaki fark nedir?
- 10. arasındaki fark nedir?
- 11. app.doScript ve $ .evalFile arasındaki fark nedir?
- 12. gVim ve gVim arasındaki fark nedir?
- 13. isAlpha ve isLetter arasındaki fark nedir?
- 14. Control.Enter ve Control.GotFocus olayları arasındaki fark nedir?
- 15. .got ve .got.plt bölümü arasındaki fark nedir?
- 16. AutomationProperties.AutomationID ve AutomationProperties.Name arasındaki fark nedir?
- 17. Android'de getDir ve getFilesDir arasındaki fark nedir?
- 18. R içinde `=` ve `<-` arasındaki fark nedir?
- 19. uint ve System.UInt32 arasındaki fark nedir?
- 20. PropertyChangeListener ve VetoableChangeListener arasındaki fark nedir?
- 21. XSS'de IDREF ve IDREFS arasındaki fark nedir?
- 22. Cacerts ve keystore arasındaki fark nedir?
- 23. GPLv2 ve GPLv3 arasındaki fark nedir?
- 24. VarIsEmpty ve VarIsEmptyParam işlevleri arasındaki fark nedir
- 25. ActiveSupport'ta mattr_accessor ve cattr_accessor arasındaki fark nedir?
- 26. RoutedCommand ve RoutedUICommand arasındaki fark nedir?
- 27. MySQL'deki boolean ve bool arasındaki fark nedir?
- 28. Task.Factory.FromAsync ve BeginX/EndX arasındaki fark nedir?
- 29. WideChar ve AnsiChar arasındaki fark nedir?
- 30. PHP'de 'stripcslashes' ve 'stripslashes' arasındaki fark nedir?
Google'da çok iyi şeyler var - http://docs.oracle.com/javase/tutorial/collections/implementations/index.html – Vic
Ve yığın akışında - http://stackoverflow.com/questions/267312/hashmap-and-a-dictionary-adt arasındaki fark- – Vic
Eğer bir seçeneğiniz varsa, 'Dictionary' yerine 'Map' kullanılmalı ve bu artık kullanılmaz. – assylias