Java LinkedHashMap

Bu eğitimde, örnekler yardımıyla Java LinkedHashMap sınıfı ve operasyonları hakkında bilgi edineceğiz.

LinkedHashMapJava koleksiyonları çerçeve sınıf karma tablo ve Harita arabiriminin bağlantılı liste uygulamasını sağlar.

LinkedHashMapArayü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.LinkedHashMappaketi 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 : LinkedHashMapSı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, trueaccessOrder 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

LinkedHashMapSı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 ekler
  • putAll() - belirtilen haritadaki tüm girişleri bu haritaya ekler
  • putIfAbsent() - 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ür
  • keySet() - haritanın tüm tuşlarını döndürür
  • values() - 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öner null.
  • 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ır
  • remove(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 LinkedHashMaphem HashMapde Maparabirimi uygular . Ancak aralarında bazı farklılıklar vardır.

  • LinkedHashMapdahili olarak çift bağlantılı bir liste tutar. Bundan dolayı, elemanlarının ekleme sırasını korur.
  • LinkedHashMapSınıf daha fazla depolama alanı gerektirir HashMap. Bunun nedeni LinkedHashMap, bağlantılı listeleri dahili olarak tutmasıdır.
  • Performansı LinkedHashMapdaha yavaştır HashMap.

Ilginç makaleler...