Java Hash Haritası sınıf bize izin veren Harita arayüzünü uygular anahtar ve değer çiftini saklamak için , anahtarların benzersiz olması gereken yer. Yinelenen anahtarı eklemeye çalışırsanız, karşılık gelen anahtarın öğesinin yerini alacaktır. Anahtar dizini kullanarak güncelleme, silme vb. işlemleri gerçekleştirmek kolaydır. HashMap sınıfı,java.utilpaket.
Java'daki HashMap, eski Hashtable sınıfına benzer, ancak senkronize değildir. Boş elemanları da saklamamıza izin verir, ancak yalnızca bir boş anahtar olmalıdır. Java 5'ten bu yana şu şekilde gösterilir:Hash HaritasıBurada K anahtar, V ise değer anlamına gelir. AbstractMap sınıfını devralır ve Harita arayüzünü uygular.
Hatırlanacak noktalar
- Java HashMap, anahtara dayalı değerleri içerir.
- Java HashMap yalnızca benzersiz anahtarlar içerir.
- Java HashMap'in bir boş anahtarı ve birden çok boş değeri olabilir.
- Java HashMap senkronize değil.
- Java HashMap düzeni korumaz.
- Java HashMap sınıfının başlangıçtaki varsayılan kapasitesi 0,75 yük faktörüyle 16'dır.
HashMap sınıfının hiyerarşisi
Yukarıdaki şekilde gösterildiği gibi HashMap sınıfı, AbstractMap sınıfını genişletir ve Harita arayüzünü uygular.
HashMap sınıf bildirimi
Java.util.HashMap sınıfının bildirimine bakalım.
her zaman verilog
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
HashMap sınıfı Parametreleri
Java.util.HashMap sınıfının Parametrelerini görelim.
Java HashMap sınıfının yapıcıları
Oluşturucu | Tanım |
---|---|
HashMap() | Varsayılan bir HashMap oluşturmak için kullanılır. |
HashMap(Harita m) | Verilen Harita nesnesi m'nin elemanlarını kullanarak karma haritayı başlatmak için kullanılır. |
HashMap(int kapasite) | Hash haritasının kapasitesini verilen tamsayı değerine (kapasite) başlatmak için kullanılır. |
HashMap(int kapasite, float loadFactor) | Argümanlarını kullanarak karma haritasının hem kapasitesini hem de yük faktörünü başlatmak için kullanılır. |
Java HashMap sınıfının yöntemleri
Yöntem | Tanım |
---|---|
geçersiz temizleme() | Bu haritadaki tüm eşlemeleri kaldırmak için kullanılır. |
boolean isEmpty() | Bu eşlemenin anahtar/değer eşlemesi içermemesi durumunda true değerini döndürmek için kullanılır. |
Nesne klonu() | Bu HashMap örneğinin yüzeysel bir kopyasını döndürmek için kullanılır: anahtarların ve değerlerin kendileri kopyalanmaz. |
entrySet()'i ayarla | Bu haritada yer alan eşlemelerin koleksiyon görünümünü döndürmek için kullanılır. |
KeySet()'i ayarla | Bu haritada bulunan anahtarların set görünümünü döndürmek için kullanılır. |
V put(Nesne anahtarı, Nesne değeri) | Haritaya giriş eklemek için kullanılır. |
void putAll(Harita haritası) | Belirtilen haritayı haritaya eklemek için kullanılır. |
V putIfAbsent(K tuşu, V değeri) | Belirtilen değeri, yalnızca önceden belirtilmemişse, belirtilen anahtarla haritaya ekler. |
V kaldır(Nesne anahtarı) | Belirtilen anahtara ait girişi silmek için kullanılır. |
boolean kaldır(Nesne anahtarı, Nesne değeri) | Belirtilen değerleri, ilişkili belirtilen anahtarlarla birlikte haritadan kaldırır. |
V hesaplama(K tuşu, BiFunction remappingFunction) | Belirtilen anahtar ve onun geçerli eşlenen değeri (veya geçerli eşleme yoksa null) için bir eşleme hesaplamak için kullanılır. |
V computeIfAbsent(K tuşu, İşlev eşlemeFonksiyonu) | Belirtilen anahtar halihazırda bir değerle ilişkilendirilmemişse (veya null ile eşlenmişse) ve null olmadığı sürece onu bu haritaya girerse, verilen eşleme işlevini kullanarak değerini hesaplamak için kullanılır. |
V computeIfPresent(K tuşu, BiFunction remappingFunction) | Belirtilen anahtarın değeri mevcutsa ve boş değilse, anahtar ve onun mevcut eşlenen değeri verilen yeni bir eşlemeyi hesaplamak için kullanılır. |
boolean includeValue(Nesne değeri) | Bu yöntem, haritada bu değere eşit bir değer mevcutsa true değerini döndürür, aksi takdirde false değerini döndürür. |
boolean includeKey(Nesne anahtarı) | Bu yöntem, haritada anahtara eşit bir anahtar mevcutsa true değerini döndürür, aksi takdirde false değerini döndürür. |
boole eşittir (Nesne o) | Belirtilen Nesneyi Harita ile karşılaştırmak için kullanılır. |
void forEach(BiConsumer eylemi) | Tüm girişler işlenene veya eylem bir istisna atıncaya kadar, haritadaki her giriş için verilen eylemi gerçekleştirir. |
V get(Nesne anahtarı) | Bu yöntem, anahtarla ilişkili değeri içeren nesneyi döndürür. |
V getOrDefault(Nesne anahtarı, V defaultValue) | Belirtilen anahtarın eşlendiği değeri veya eşleme anahtar için eşleme içermiyorsa defaultValue değerini döndürür. |
boolean isEmpty() | Bu yöntem, harita boşsa true değerini döndürür; en az bir anahtar içeriyorsa false değerini döndürür. |
V birleştirme(K tuşu, V değeri, BiFunction remappingFunction) | Belirtilen anahtar zaten bir değerle ilişkilendirilmemişse veya null ile ilişkilendirilmişse, onu verilen null olmayan değerle ilişkilendirir. |
V değiştir(K tuşu, V değeri) | Belirtilen anahtar için belirtilen değerin yerini alır. |
boolean değiştirme(K tuşu, V eskiDeğer, V yeniDeğer) | Belirtilen anahtarın eski değerini yeni değerle değiştirir. |
void Hepsini Değiştir(BiFunction işlevi) | Tüm girişler işlenene veya işlev bir istisna atıncaya kadar, her girişin değerini, o girişte verilen işlevin çağrılmasının sonucuyla değiştirir. |
Koleksiyon değerleri() | Haritada bulunan değerlerin koleksiyon görünümünü döndürür. |
int boyut() | Bu yöntem haritadaki girişlerin sayısını döndürür. |
Java HashMap Örneği
Anahtar ve değer çiftini depolamak için basit bir HashMap örneğini görelim.
import java.util.*; public class HashMapExample1{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(4,'Grapes'); System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Şimdi Test Edin
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
Bu örnekte, Integer'ı anahtar olarak ve String'i değer olarak saklıyoruz, bu yüzden şunu kullanıyoruz:Hash Haritasıtip olarak.koymak()yöntem, öğeleri haritaya ekler.
Anahtar ve değer öğelerini elde etmek için getKey() ve getValue() yöntemlerini çağırmalıyız.Harita.Girişiarayüz şunları içerir anahtarı al() Ve Değer elde etmek() yöntemler. Ancak Map.Entry örneğini alabilmek için Map arayüzünün entrySet() metodunu çağırmalıyız.
HashMap'te Yinelenen Anahtar Yok
Yinelenen anahtarları HashMap'te depolayamazsınız. Ancak yinelenen anahtarı başka bir değerle saklamaya çalışırsanız, bu değerin yerini alacaktır.
import java.util.*; public class HashMapExample2{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(1,'Grapes'); //trying duplicate key System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Şimdi Test Edin
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
() öğelerini eklemek için Java HashMap örneği
Burada eleman eklemenin farklı yollarını görüyoruz.
import java.util.*; class HashMap1{ public static void main(String args[]){ HashMap hm=new HashMap(); System.out.println('Initial list of elements: '+hm); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('After invoking put() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } hm.putIfAbsent(103, 'Gaurav'); System.out.println('After invoking putIfAbsent() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } HashMap map=new HashMap(); map.put(104,'Ravi'); map.putAll(hm); System.out.println('After invoking putAll() method '); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: {} After invoking put() method 100 Amit 101 Vijay 102 Rahul After invoking putIfAbsent() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav After invoking putAll() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav 104 Ravi
() öğelerini kaldırmak için Java HashMap örneği
Burada öğeleri kaldırmanın farklı yollarını görüyoruz.
import java.util.*; public class HashMap2 { public static void main(String args[]) { HashMap map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); map.put(103, 'Gaurav'); System.out.println('Initial list of elements: '+map); //key-based removal map.remove(100); System.out.println('Updated list of elements: '+map); //value-based removal map.remove(101); System.out.println('Updated list of elements: '+map); //key-value pair based removal map.remove(102, 'Rahul'); System.out.println('Updated list of elements: '+map); } }
Çıktı:
Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {102=Rahul, 103=Gaurav} Updated list of elements: {103=Gaurav}
() öğelerini değiştirmek için Java HashMap örneği
Burada elemanları değiştirmenin farklı yollarını görüyoruz.
import java.util.*; class HashMap3{ public static void main(String args[]){ HashMap hm=new HashMap(); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('Initial list of elements:'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(102, 'Gaurav'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(101, 'Vijay', 'Ravi'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replaceAll((k,v) -> 'Ajay'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: 100 Amit 101 Vijay 102 Rahul Updated list of elements: 100 Amit 101 Vijay 102 Gaurav Updated list of elements: 100 Amit 101 Ravi 102 Gaurav Updated list of elements: 100 Ajay 101 Ajay 102 Ajay
HashSet ve HashMap arasındaki fark
HashSet yalnızca değerleri içerirken HashMap bir giriş (anahtar ve değer) içerir.
Java HashMap Örneği: Kitap
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new HashMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(1,b1); map.put(2,b2); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Şimdi Test Edin
Çıktı:
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications and Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6
İlgili konular
Java'da Harita nasıl yinelenir
Java'da HashMap Nasıl Sıralanır
HashMap'te Yük Faktörü
HashMap'in Java'da Çalışması | HashMap Nasıl Çalışır?
HashMap ve Hashtable arasındaki fark
HashMap'i Değere Göre Sıralama
Sridevi
HashSet ve HashMap arasındaki fark