Dalam tutorial ini, kita akan belajar tentang kelas Java LinkedHashMap dan operasinya dengan bantuan contoh.
The LinkedHashMap
kelas dari koleksi kerangka Java menyediakan tabel hash dan terkait pelaksanaan daftar antarmuka Peta.
The LinkedHashMap
antarmuka 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.LinkedHashMap
paket 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 : LinkedHashMap
Kelas 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 true
diteruskan 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 LinkedHashMap
kelas menyediakan metode yang memungkinkan kita untuk melakukan berbagai operasi pada peta.
Sisipkan Elemen ke LinkedHashMap
put()
- menyisipkan pemetaan kunci / nilai yang ditentukan ke petaputAll()
- memasukkan semua entri dari peta yang ditentukan ke peta iniputIfAbsent()
- 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 petakeySet()
- mengembalikan satu set semua kunci petavalues()
- 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 kembalinull
.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 petaremove(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 LinkedHashMap
dan HashMap
mengimplementasikan Map
antarmuka. Namun, terdapat beberapa perbedaan di antara keduanya.
LinkedHashMap
memelihara daftar tertaut ganda secara internal. Karena itu, ia mempertahankan urutan penyisipan elemennya.- The
LinkedHashMap
kelas membutuhkan penyimpanan lebihHashMap
. Ini karenaLinkedHashMap
mempertahankan daftar tertaut secara internal. - Performa
LinkedHashMap
lebih lambat dariHashMap
.