Java LinkedHashMap

Dalam tutorial ini, kita akan belajar tentang kelas Java LinkedHashMap dan operasinya dengan bantuan contoh.

The LinkedHashMapkelas dari koleksi kerangka Java menyediakan tabel hash dan terkait pelaksanaan daftar antarmuka Peta.

The LinkedHashMapantarmuka meluas kelas HashMap untuk menyimpan entri dalam tabel hash. Ini secara internal memelihara daftar tertaut ganda di antara semua entri untuk mengurutkan entri.

Membuat LinkedHashMap

Untuk membuat hashmap tertaut, kita harus mengimpor java.util.LinkedHashMappaket terlebih dahulu. Setelah kita mengimpor paketnya, berikut adalah bagaimana kita bisa membuat hashmaps tertaut di Java.

 // LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f); 

Pada kode di atas, kami telah membuat hashmap yang ditautkan bernama angka.

Sini,

  • Kunci - pengenal unik yang digunakan untuk mengaitkan setiap elemen (nilai) di peta
  • Nilai - elemen yang terkait dengan kunci di peta

Perhatikan bagiannya new LinkedHashMap(8, 0.6). Di sini, parameter pertama adalah kapasitas dan parameter kedua adalah loadFactor .

  • kapasitas - Kapasitas dari hashmap tertaut ini adalah 8. Artinya, dapat menyimpan 8 entri.
  • loadFactor - Faktor beban dari hashmap yang ditautkan ini adalah 0,6. Ini berarti, setiap kali peta hash kami diisi oleh 60%, entri dipindahkan ke tabel hash baru dua kali lipat ukuran tabel hash asli.

Kapasitas default dan faktor beban

Anda dapat membuat hashmap tertaut tanpa menentukan kapasitas dan faktor muatnya. Sebagai contoh,

 //LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap(); 

Secara default,

  • kapasitas dari hashmap yang ditautkan adalah 16
  • faktor beban akan menjadi 0,75

Catatan : LinkedHashMapKelas juga memungkinkan kita untuk menentukan urutan entri. Sebagai contoh

 // LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder); 

Di sini, accessOrder adalah nilai boolean. Nilai defaultnya adalah false. Dalam kasus ini entri dalam hashmap tertaut diurutkan berdasarkan urutan penyisipannya.

Namun, jika truediteruskan sebagai accessOrder, entri dalam hashmap tertaut akan diurutkan dari yang paling terakhir diakses ke yang paling baru diakses.

Membuat LinkedHashMap dari Peta Lain

Inilah cara kita membuat hashmap tertaut yang berisi semua elemen peta lainnya.

 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); ) ) 

Keluaran

 LinkedHashMap1: (Dua = 2, Empat = 4) LinkedHashMap2: (Dua = 2, Empat = 4, Tiga = 3) 

Metode LinkedHashMap

The LinkedHashMapkelas menyediakan metode yang memungkinkan kita untuk melakukan berbagai operasi pada peta.

Sisipkan Elemen ke LinkedHashMap

  • put() - menyisipkan pemetaan kunci / nilai yang ditentukan ke peta
  • putAll() - memasukkan semua entri dari peta yang ditentukan ke peta ini
  • putIfAbsent() - menyisipkan pemetaan kunci / nilai yang ditentukan ke peta jika kunci yang ditentukan tidak ada di peta

Sebagai contoh,

  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); ) ) 

Keluaran

 LinkedHashMap Asli: (Dua = 2, Empat = 4) Memperbarui LinkedHashMap: (Dua = 2, Empat = 4, Enam = 6) LinkedHashMap Baru: (Satu = 1, Dua = 2, Empat = 4, Enam = 6) 

Akses Elemen LinkedHashMap

1. Menggunakan entrySet (), keySet () dan nilai ()

  • entrySet() - mengembalikan satu set dari semua pemetaan kunci / nilai peta
  • keySet() - mengembalikan satu set semua kunci peta
  • values() - mengembalikan satu set semua nilai peta

Sebagai contoh,

 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()); ) ) 

Keluaran

 LinkedHashMap: (Satu = 1, Dua = 2, Tiga = 3) Pemetaan Kunci / Nilai: (Satu = 1, Dua = 2, Tiga = 3) Kunci: (Satu, Dua, Tiga) Nilai: (1, 2, 3 ) 

2. Menggunakan get () dan getOrDefault ()

  • get()- Mengembalikan nilai yang terkait dengan kunci yang ditentukan. Jika kuncinya tidak ditemukan, ia akan kembali null.
  • getOrDefault()- Mengembalikan nilai yang terkait dengan kunci yang ditentukan. Jika kunci tidak ditemukan, ini mengembalikan nilai default yang ditentukan.

Sebagai contoh,

 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); ) ) 

Keluaran

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Returned Number: 3 Returned Number: 5 

Elemen LinkedHashMap yang Dihapus

  • remove(key) - mengembalikan dan menghapus entri yang terkait dengan kunci tertentu dari peta
  • remove(key, value) - menghapus entri dari peta hanya jika kunci yang ditentukan dipetakan menjadi nilai yang ditentukan dan mengembalikan nilai boolean

Sebagai contoh,

 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); ) ) 

Keluaran

LinkedHashMap: (Satu = 1, Dua = 2, Tiga = 3) Nilai yang dihapus: 2 Apakah entri (Tiga = 3) dihapus? Benar Diperbarui LinkedHashMap: (Satu = 1)

Metode Lain dari LinkedHashMap

metode Deskripsi
clear() menghapus semua entri dari peta
containsKey() memeriksa apakah peta berisi kunci yang ditentukan dan mengembalikan nilai boolean
containsValue() memeriksa apakah peta berisi nilai yang ditentukan dan mengembalikan nilai boolean
size() mengembalikan ukuran peta
isEmpty() memeriksa apakah peta kosong dan mengembalikan nilai boolean

LinkedHashMap Vs. HashMap

Baik LinkedHashMapdan HashMapmengimplementasikan Mapantarmuka. Namun, terdapat beberapa perbedaan di antara keduanya.

  • LinkedHashMapmemelihara daftar tertaut ganda secara internal. Karena itu, ia mempertahankan urutan penyisipan elemennya.
  • The LinkedHashMapkelas membutuhkan penyimpanan lebih HashMap. Ini karena LinkedHashMapmempertahankan daftar tertaut secara internal.
  • Performa LinkedHashMaplebih lambat dari HashMap.

Artikel yang menarik...