Java'da HashMap'in iç yapısı ve çalışma şekli



Java'da HashMap yapısını anlamak için onun nasıl çalıştığını ayrıntılı bir şekilde incelemek gereklidir. HashMap, Java Koleksiyon Çerçevesi'nin (Java Collections Framework) bir parçasıdır ve anahtar-değer çiftlerini saklamak için kullanılır. İşte HashMap'in temel bileşenleri ve işleyişi hakkında bazı önemli noktalar:


Hashing: HashMap anahtarların hash kodlarını kullanarak değerleri saklar ve alır. Object sınıfından türetilen her nesnenin bir hashCode() metodu vardır. HashMap bu metodları kullanarak anahtarların hash kodlarını hesaplar.


Array ve LinkedList (veya TreeNode) Yapıları: HashMap içindeki veriler, hash koduna göre indekslenmiş bir dizi (array) içinde saklanır. Her dizi elemanı, bir LinkedList veya Java 8 ve sonrasında TreeNode (kırmızı-siyah ağaç yapısını kullanan bir yapı) olarak çalışabilir.


Kap (Bucket) ve Giriş (Entry): Her dizi elemanı bir "kap" (bucket) olarak adlandırılır ve bir veya birden fazla anahtar-değer çiftini (entry) içerebilir. Eğer farklı anahtarların hash kodları aynı kap için hesaplanırsa, bu "çakışma" (collision) olarak adlandırılır. Çakışmalar, LinkedList veya TreeNode yapısı ile yönetilir.


Put ve Get İşlemleri: Bir anahtar-değer çifti eklemek için put metodu kullanılır. Bu metod, anahtarın hash kodunu hesaplar, uygun kapı bulur ve değeri kapa ekler. get metodu ise anahtarın hash kodunu kullanarak doğru kapı bulur ve değeri geri döndürür.


Yük Faktörü ve Yeniden Boyutlandırma (Rehashing): HashMap'in kapasitesi (dizinin boyutu) ve yük faktörü (kapların ne kadar dolu olduğunu belirten bir değer), veri yapısının performansını etkiler. Yük faktörü belirli bir eşiği aştığında, HashMap otomatik olarak yeniden boyutlandırılır (rehashing); bu, mevcut tüm anahtar-değer çiftlerini daha büyük bir diziye kopyalamak anlamına gelir.


Null Değerler: HashMap, anahtar ve değer olarak null değerlerini kabul eder. Ancak, sadece bir null anahtarına izin verilir.


Sırasızlık: HashMap, elemanları sıralı bir şekilde saklamaz. Anahtar-değer çiftlerinin sırası, anahtarların hash kodlarına bağlıdır.


HashMap veri yapısının bu özellikleri, onun hızlı ve verimli bir şekilde çalışmasını sağlar, ancak aynı zamanda belirli durumlarda başka veri yapılarını kullanmayı gerektirebilir. Örneğin, sıralı bir şekilde veri saklamak isteniyorsa TreeMap veya LinkedHashMap gibi alternatifler tercih edilebilir.

Hiç yorum yok

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo