what is java hashtable hashtable implementation example
Bu Öğretici, Bir Java HashTable, Oluşturucular ve Hashtable Sınıfı, Uygulama ve Hashtable ile Hashmap Yöntemlerinin Ne Olduğunu Açıklar:
HashTable Nedir?
Java'da bir Hashtable, listeler olan bir dizi öğedir. Bu listelerin her biri bir Kova .
Anahtarları değerlerle eşler. Java'da, karma tablo 'HashTable' sınıfı tarafından uygulanır. Bu sınıf, harita arayüzünü uygular ve sözlük sınıfını miras alır.
=> Mükemmel Java Eğitim Kılavuzuna Buradan Bakabilirsiniz.
Hashtable'ın Java'daki bazı benzersiz özellikleri şunlardır:
- Öğeleri olarak listeleri veya kümeleri içeren bir dizidir.
- Benzersiz unsurlara sahiptir.
- Hashtable'da boş anahtar veya boş değer yoktur.
- Hashmap'e benzer ancak senkronize edilir.
Ne öğreneceksin:
Java'da HashTable Sınıfı
Java'da, bu sınıf java.util paketinin bir üyesidir. Bu nedenle, HashTable sınıf işlevselliğini dahil etmek için programımıza aşağıdaki ifadelerden birini dahil etmeliyiz.
içe aktar java.util. *;
VEYA
java.util.HashTable'ı içe aktarın;
Java.util.HashTable sınıfı için genel bir sınıf bildirimi aşağıda verilmiştir:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Buraya,
- K => HashTable anahtarlarının türü
- V => eşlenen değerlerin türü
HashTable sınıf API'si, sınıf nesnelerini ve HashTable sınıfının sorunsuz çalışmasını sağlayan sınıfın bir parçası olan çeşitli işlemleri veya yöntemleri oluşturmak için kullanılan oluşturuculardan oluşur.
HashTable Sınıfının Oluşturucuları
Yapıcı Prototip | Açıklama | |
---|---|---|
Ayarlamak | Ayarlamak | Haritadaki eşlemelerin ayarlanmış bir görünümünü döndürür. |
Hashtable () | Varsayılan yapıcı: Başlangıç varsayılan kapasitesi ve yük faktörüne sahip bir HashTable sınıf nesnesi oluşturur. | |
Hashtable (int kapasite) | Belirtilen başlangıç kapasitesine sahip bir karma tablo oluşturur. | |
Hashtable (int kapasite, float loadFactor) | Başlangıç kapasitesi = kapasite ve yük faktörü = loadFactor ile bir karma tablo nesnesi oluşturur. | |
Hashtable (Harita t) | Bağımsız değişken olarak belirtilen verilen haritadan yeni bir hashTable oluşturur. |
HashTable Sınıfının Yöntemleri
Yöntem | Yöntem Prototipi | Açıklama |
---|---|---|
açık | void temizle () | Değerleri sıfırlayarak HashTable'ı temizler. |
klon | Nesne klonu () | HashTable nesnesinin basit bir kopyasını oluşturur ve onu döndürür. |
hesaplamak | V hesaplama (K tuşu, BiFunction yeniden eşleme Fonksiyonu) | Yeniden eşleme işlevini kullanarak verilen anahtar ile değer arasındaki eşlemeyi hesaplar. |
computeIfAbsent | V computeIfAbsent (K tuşu, Function mappingFunction) | Belirtilen anahtar zaten verilen değerle ilişkilendirilmemişse, yeniden eşleme işlevini kullanarak verilen anahtar ile değer arasındaki eşlemeyi hesaplar. |
computeIfPresent | V computeIfPresent (K tuşu, BiFunction yeniden eşlemeFunction) | Verilen anahtar varsa, yeniden eşleme işlevi verilen anahtar ile değer arasında yeni bir eşleme hesaplamak için kullanılır. |
elementler | Numaralandırma öğeleri () | Karma tablosundaki değerlerin bir listesini döndürür. |
eşittir | boolean eşittir (Object o) | Verilen nesneyi HashTable ile karşılaştırır. |
her biri için | void forEach (BiConsumer eylemi) | Verilen eylem, tüm öğeler tükenene kadar HashTable öğelerinin her biri için gerçekleştirilir. |
getOrDefault | V getOrDefault (Nesne anahtarı, V defaultValue) | Belirtilen anahtarın eşlendiği değeri veya harita anahtar için eşleşme içermiyorsa defaultValue değerini döndürür. |
hash kodu | int hashCode () | HashTable'ın karma kodunu döndürür. |
anahtarlar | Numaralandırma anahtarları () | HashTable'daki anahtarları numaralandırma olarak döndürür. |
anahtar seti | KeySet () ayarla | HashTable için anahtar setini (bir küme olarak anahtarlar) döndürür. |
Git | V birleştirme (K anahtarı, V değeri, BiFunction yeniden eşleme Fonksiyonu) | Anahtar zaten yoksa veya boş değilse, yeniden eşleme işlevini kullanarak verilen anahtarı boş olmayan değerle eşler. |
koymak | V koy (K anahtarı, V değeri) | HashTable'a yeni bir anahtar / değer çifti ekler. |
putAll | void putAll (Harita t)) | Verilen haritanın anahtar / değer çiftlerini HashTable'a koyar veya kopyalar. |
putIfAbsent | V putIfAbsent (K anahtarı, V değeri) | Anahtar zaten yoksa veya null ile ilişkilendirilmemişse, verilen anahtarı boş değerle ilişkilendirir. |
Kaldır | boole kaldır (Nesne anahtarı, Nesne değeri) | Verilen anahtar / değer çiftini HashTable'dan siler. |
yerine koymak | V değiştirme (K anahtarı, V değeri) | Verilen anahtarın değerini belirtilen değerle değiştirir. |
yerine koymak | boole yerine (K anahtarı, V oldValue, V newValue) | Verilen anahtarın eski değerini yeni değerle değiştirir. |
hepsini değiştir | void replaceAll (BiFunction işlevi) | HashTable'daki tüm girişler, verilen işlevin değerlendirilmesinden elde edilen değerle değiştirilir. |
toString | String toString () | HashTable nesnesini dize gösterimine dönüştürür. |
değerler | Koleksiyon değerleri () | HashTable'daki değerleri bir koleksiyon olarak döndürür. |
içerir | boolean içerir (Nesne değeri) | Verilen değerin HashTable'da mevcut olup olmadığını kontrol eder. Varsa doğru, yoksa yanlış döndürür. |
değer içerir | boolean containsValue (Nesne değeri) | HashTable'da verilen değere eşit bir değer olup olmadığını kontrol eder ve true döndürür. |
containsKey | boolean containsKey (Nesne anahtarı) | HashTable'da verilen anahtara eşit herhangi bir anahtar olup olmadığını kontrol eder ve evet ise true döndürür. |
boş | boolean isEmpty () | Verilen HashTable'ın boş olup olmadığını kontrol eder ve evet ise true döndürür. |
yeniden doldurmak | korumalı void rehash () | Karma tablonun boyutunu artırmak ve tüm anahtarlarını yeniden kullanmak için kullanılır. |
almak | V get (Nesne anahtarı) | Verilen anahtarın değerini alır. |
Kaldır | V kaldır (Nesne anahtarı) | Verilen anahtarı ve değeri siler ve bu değeri döndürür. |
boyut | int size () | HashTable'da bulunan öğelerin boyutunu veya sayısını döndürür. |
HashTable'ın Uygulanması
Aşağıda, sınıfın Java'daki uygulaması verilmiştir. Burada sınıf tarafından sağlanan tüm önemli yöntemleri gösterdik.
excel sayfasına test senaryoları nasıl yazılır
import java.util.*; class Main{ public static void main(String args()){ //create a Hashtable and initiliaze it Hashtable hash_tab=new Hashtable (); hash_tab.put(100,'Red'); hash_tab.put(101,'Green'); hash_tab.put(104,'Blue'); hash_tab.put(102,'Orange'); hash_tab.put(103,'Brown'); //obtain entrySet for the Hashtable and print the elments System.out.println('The contents of Hashtable:'); for(Map.Entry m:hash_tab.entrySet()){ System.out.println(m.getKey()+' : '+m.getValue()); } //getOrDefault operation => get the value at given key or output default message System.out.println('Hashtable Value at 101: ' + hash_tab.getOrDefault(101, 'Value Not Found')); System.out.println('Hashtable Value at 105: ' +hash_tab.getOrDefault(105, 'Value Not Found')); //remove operation => delete value at given key hash_tab.remove(102); System.out.println('After remove(102), the Hash Table: '+ hash_tab); //putIfAbsent operation=>update the key-value pair in table if absent hash_tab.putIfAbsent(102,'Orange'); System.out.println('Updated Hash Table: '+hash_tab); } }
Çıktı:
Hashtable'ın içeriği:
104: Mavi
103: Kahverengi
102: Turuncu
101: Yeşil
100: Ağ
101'de Hashtable Değeri: Yeşil
105'te Hashtable Değeri: Değer Bulunamadı
Kaldırdıktan sonra (102), Karma Tablosu: {104 = Mavi, 103 = Kahverengi, 101 = Yeşil, 100 = Kırmızı}
Güncellenmiş Karma Tablosu: {104 = Mavi, 103 = Kahverengi, 102 = Turuncu, 101 = Yeşil, 100 = Kırmızı}
HashTable Java Örneği
Bu programda, hesap sahibi isimleri değer olarak ilgili hesap bakiyeleri ile birlikte anahtarlar ile bir hashtable tanımlıyoruz. İlk olarak, anahtarları HashTable'dan bir numaralandırma olarak alıyoruz. Sonra bu numaralandırmayı kullanarak anahtar-değer çiftlerini HashTable'dan yazdırıyoruz.
Daha sonra, sahiplerden birinin hesap bakiyesini günceller ve güncellenen tutarı yazdırırız.
Aşağıda verilen program bu uygulamayı göstermektedir.
import java.util.*; public class Main { public static void main(String args()) { // Create a Hashtable of account balance Hashtable acc_balance = new Hashtable(); Enumeration person_names; String name_str; double balance; //initialize the Hashtable acc_balance.put('Lily', new Double(4367.34)); acc_balance.put('Ben', new Double(95.43)); acc_balance.put('Lacy', new Double(1200.00)); acc_balance.put('Dillon', new Double(499.22)); acc_balance.put('James', new Double(78.48)); // retrieve the keys of the Hashtable person_names = acc_balance.keys(); System.out.println('The account balance Hashtable:'); System.out.println(' KEY VALUE '); //print the contents of Hashtable while(person_names.hasMoreElements()) { name_str = (String) person_names.nextElement(); System.out.println(' ' + name_str + ' ' + acc_balance.get(name_str)); } System.out.println(); // Update Ben's Account by adding 1000 to it. balance = ((Double)acc_balance.get('Ben')).doubleValue(); acc_balance.put('Ben', new Double(balance + 1000)); //print the contents of updated account System.out.println('Ben's new Account balance: ' + acc_balance.get('Ben')); } }
Çıktı:
Hesap bakiyesi Hashtable:
ANAHTAR DEĞER
James 78.48
Ben 95.43
Dillon 499.22
Zambak 4367.34
Dantelli 1200.0
Ben’in yeni Hesap bakiyesi: 1095.43
Hashtable Vs Hashmap
HashTable | HashMap |
---|---|
HashTable'ın yürütülmesi yavaş. | HashMap daha hızlıdır. |
Sözlük sınıfını devralır. | AbstractMap sınıfını devralır. |
Eski bir sınıftır. | JDK 1.2'de sunulan HashMap sınıfı |
Senkronize ve iş parçacığı güvenli. | Eşitlenmemiş ve iş parçacığı güvenli değildir. |
Dahili olarak senkronize edilir ve geri alınamaz. | Collections.synchronizedMap yöntemi kullanılarak senkronize edilebilir. |
Boş anahtar / değere izin verilmez. | Boş anahtara ve birden çok boş değere izin verir. |
Numaralandırıcı ve Yineleyici kullanılarak çapraz geçiş yapılabilir. | Yalnızca Yineleyici kullanılarak geçilebilir. |
Sıkça Sorulan Sorular
S # 1) Java'da Hashtable nedir?
Cevap: 'Sözlük' sınıfını miras alan ve anahtar-değer çiftlerini depolayan eski bir sınıftır.
S # 2) Hashtable neden kullanılır?
Cevap: Anahtar-değer çiftlerini saklamak için kullanılır. Dolayısıyla, anahtar / değer çiftlerini tablo biçiminde saklamamız gerektiğinde HashTable'a gidiyoruz. İkinci olarak, kümeleri kullanarak aynı anahtar için birden çok değer depolayabilir. Veri alma, HashTable'larda etkilidir.
S # 3)Java'da bir Hashtable'ı nasıl oluşturursunuz?
Cevap: Bunu, java.util.HashTable sınıfının bir nesnesini başlatarak oluşturabilirsiniz.
HashTable hashTable = new HashTable();
Yukarıdaki ifade, Anahtarlar ve String türü değerlere sahip 'hashTable' adlı bir HashTable oluşturur.
S # 4) Hashtable iş parçacığı güvenli midir?
Cevap: Evet, iş parçacığı açısından güvenlidir. İş parçacığı güvenliğinin gerekli olmadığı durumlarda, HashMap'i tercih edebiliriz.
S # 5) Hashtable bir örnekle Java'da dahili olarak nasıl çalışır?
Cevap: Dahili olarak anahtar / değer çiftlerini paket adı verilen bir yapıda depolar. Bölümün konumu, anahtarın hashCode'u tarafından belirlenir. Karma işlevi, Anahtarın hashCode'unu kullanarak paket konumunu alır.
Sonuç
HashTable, anahtar-değer çiftleri biçiminde depolanan verilerden oluşur. Anahtarlar veya değerler boş olamaz. Java'da HashTable sınıfı kullanılarak uygulanır.
HashTable sınıfının Java dilinde HashTable uygulamasıyla birlikte sağladığı kurucuları ve yöntemleri gördük.
Yaklaşan eğitimimizde HashMap koleksiyonunu tartışacağız.
bir diziye nasıl eklenir
=> Özel Java Eğitimi Eğitim Dizisi İçin Burayı Ziyaret Edin.
Önerilen Kaynaklar
- Örneklerle Java Yansıtma Eğitimi
- Örneklerle Java Tarayıcı Sınıfı Eğitimi
- Java Temel Bilgileri: Java Sözdizimi, Java Sınıfı ve Temel Java Kavramları
- Java Vektör Nedir | Örneklerle Java Vektör Sınıfı Eğitimi
- Java SWING Eğitimi: Konteyner, Bileşenler ve Olay İşleme
- Java Dizi Sınıfı Eğitimi - Örneklerle java.util.Arrays Sınıfı
- Yeni Başlayanlar İçin JAVA Eğitimi: 100+ Uygulamalı Java Video Eğitimi
- Java Dizesi () Örneklerle Yöntem Eğitimi içerir