Bu eğitimde, örnekler yardımıyla Java LinkedHashMap sınıfı ve operasyonları hakkında bilgi edineceğiz.
LinkedHashMap
Java koleksiyonları çerçeve sınıf karma tablo ve Harita arabiriminin bağlantılı liste uygulamasını sağlar.
LinkedHashMap
Arayüz karma tablodaki kayıt için HashMap sınıfını genişletir. Girişlerini sıralamak için tüm girişleri arasında çift bağlantılı bir liste tutar.
LinkedHashMap Oluşturma
Bağlı bir hashmap oluşturmak için önce java.util.LinkedHashMap
paketi içe aktarmalıyız . Paketi içe aktardıktan sonra, Java'da bağlantılı hashmap'leri nasıl oluşturabileceğimizi burada bulabilirsiniz.
// LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f);
Yukarıdaki kodda, numaralar adında bağlantılı bir hashmap oluşturduk.
Buraya,
- Anahtar - bir haritadaki her bir öğeyi (değeri) ilişkilendirmek için kullanılan benzersiz bir tanımlayıcı
- Değer - bir haritadaki anahtarlarla ilişkilendirilen öğeler
Parçaya dikkat edin new LinkedHashMap(8, 0.6)
. Burada ilk parametre kapasite ve ikinci parametre loadFactor'dür .
- kapasite - Bu bağlantılı hashmap'in kapasitesi 8'dir. Yani, 8 giriş saklayabilir.
- loadFactor - Bu bağlantılı hashmap'in yük faktörü 0.6'dır . Bu, hash haritamız her% 60 doldurulduğunda, girişlerin orijinal hash tablosunun iki katı boyutunda yeni bir hash tablosuna taşındığı anlamına gelir.
Varsayılan kapasite ve yük faktörü
Kapasitesini ve yük faktörünü tanımlamadan bağlantılı bir hashmap oluşturmak mümkündür. Örneğin,
//LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap();
Varsayılan olarak,
- bağlantılı hashmap'in kapasitesi 16 olacaktır
- yük faktörü 0,75 olacaktır
Not : LinkedHashMap
Sınıf ayrıca girişlerinin sırasını tanımlamamıza izin verir. Örneğin
// LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder);
Burada accessOrder bir boole değeridir. Varsayılan değeri false
. Bu durumda, bağlantılı karma haritadaki girişler, ekleme sırasına göre sıralanır.
Bununla birlikte, true
accessOrder olarak aktarılırsa, bağlantılı karma haritadaki girişler en son erişilenlerden en son erişilenlere doğru sıralanır.
Diğer Haritalardan LinkedHashMap Oluşturma
Diğer haritaların tüm unsurlarını içeren bağlantılı bir hashmap'i nasıl oluşturabileceğimizi burada bulabilirsiniz.
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( // Creating a LinkedHashMap of even numbers LinkedHashMap evenNumbers = new LinkedHashMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("LinkedHashMap1: " + evenNumbers); // Creating a LinkedHashMap from other LinkedHashMap LinkedHashMap numbers = new LinkedHashMap(evenNumbers); numbers.put("Three", 3); System.out.println("LinkedHashMap2: " + numbers); ) )
Çıktı
LinkedHashMap1: (İki = 2, Dört = 4) LinkedHashMap2: (İki = 2, Dört = 4, Üç = 3)
LinkedHashMap Yöntemleri
LinkedHashMap
Sınıf bize harita üzerinde çeşitli işlemleri gerçekleştirmek için izin yöntemler sağlar.
LinkedHashMap'e Eleman Ekle
put()
- belirtilen anahtar / değer eşlemesini haritaya eklerputAll()
- belirtilen haritadaki tüm girişleri bu haritaya eklerputIfAbsent()
- haritada belirtilen anahtar yoksa, belirtilen anahtar / değer eşlemesini haritaya ekler
Örneğin,
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( // Creating LinkedHashMap of even numbers LinkedHashMap evenNumbers = new LinkedHashMap(); // Using put() evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("Original LinkedHashMap: " + evenNumbers); // Using putIfAbsent() evenNumbers.putIfAbsent("Six", 6); System.out.println("Updated LinkedHashMap(): " + evenNumbers); //Creating LinkedHashMap of numbers LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); // Using putAll() numbers.putAll(evenNumbers); System.out.println("New LinkedHashMap: " + numbers); ) )
Çıktı
Orijinal LinkedHashMap: (İki = 2, Dört = 4) Güncellenmiş LinkedHashMap: (İki = 2, Dört = 4, Altı = 6) Yeni LinkedHashMap: (Bir = 1, İki = 2, Dört = 4, Altı = 6)
LinkedHashMap Öğelerine Erişim
1. entrySet (), keySet () ve değerleri () kullanma
entrySet()
- haritanın tüm anahtar / değer eşlemelerinin bir setini döndürürkeySet()
- haritanın tüm tuşlarını döndürürvalues()
- haritanın tüm değerlerinin bir kümesini döndürür
Örneğin,
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // Using entrySet() System.out.println("Key/Value mappings: " + numbers.entrySet()); // Using keySet() System.out.println("Keys: " + numbers.keySet()); // Using values() System.out.println("Values: " + numbers.values()); ) )
Çıktı
LinkedHashMap: (Bir = 1, İki = 2, Üç = 3) Anahtar / Değer eşlemeleri: (Bir = 1, İki = 2, Üç = 3) Anahtarlar: (Bir, İki, Üç) Değerler: (1, 2, 3 )
2. get () ve getOrDefault () kullanma
get()
- Belirtilen anahtarla ilişkili değeri döndürür. Anahtar bulunmazsa geri dönernull
.getOrDefault()
- Belirtilen anahtarla ilişkili değeri döndürür. Anahtar bulunmazsa, belirtilen varsayılan değeri döndürür.
Örneğin,
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // Using get() int value1 = numbers.get("Three"); System.out.println("Returned Number: " + value1); // Using getOrDefault() int value2 = numbers.getOrDefault("Five", 5); System.out.println("Returned Number: " + value2); ) )
Çıktı
LinkedHashMap: (Bir = 1, İki = 2, Üç = 3) Geri Gelen Sayı: 3 İade Edilen Sayı: 5
LinkedHashMap Öğeleri Kaldırıldı
remove(key)
- belirtilen anahtarla ilişkili girişi haritadan döndürür ve kaldırırremove(key, value)
- girişi haritadan yalnızca belirtilen anahtar belirtilen değerle eşlenirse kaldırır ve boole değeri döndürür
Örneğin,
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // remove method with single parameter int value = numbers.remove("Two"); System.out.println("Removed value: " + value); // remove method with two parameters boolean result = numbers.remove("Three", 3); System.out.println("Is the entry Three removed? " + result); System.out.println("Updated LinkedHashMap: " + numbers); ) )
Çıktı
LinkedHashMap: (Bir = 1, İki = 2, Üç = 3) Kaldırılan değer: 2 Giriş (Üç = 3) kaldırıldı mı? Gerçek Güncellenmiş LinkedHashMap: (Bir = 1)
LinkedHashMap'in Diğer Yöntemleri
Yöntem | Açıklama |
---|---|
clear() | haritadaki tüm girişleri kaldırır |
containsKey() | haritanın belirtilen anahtarı içerip içermediğini kontrol eder ve bir boole değeri döndürür |
containsValue() | haritanın belirtilen değeri içerip içermediğini kontrol eder ve bir boole değeri döndürür |
size() | haritanın boyutunu döndürür |
isEmpty() | haritanın boş olup olmadığını kontrol eder ve bir boole değeri döndürür |
LinkedHashMap Vs. HashMap
Hem ve LinkedHashMap
hem HashMap
de Map
arabirimi uygular . Ancak aralarında bazı farklılıklar vardır.
LinkedHashMap
dahili olarak çift bağlantılı bir liste tutar. Bundan dolayı, elemanlarının ekleme sırasını korur.LinkedHashMap
Sınıf daha fazla depolama alanı gerektirirHashMap
. Bunun nedeniLinkedHashMap
, bağlantılı listeleri dahili olarak tutmasıdır.- Performansı
LinkedHashMap
daha yavaştırHashMap
.