Menguasai Java LinkedHashMap: Pembuatan, Operasi, dan Perbandingan Performa
Menguasai Java LinkedHashMap: Pembuatan, Operasi, dan Perbandingan Performa
Temukan cara membuat, memanipulasi, dan membandingkan LinkedHashMap Java dengan contoh dunia nyata dan praktik terbaik.
Kelas LinkedHashMap dalam framework koleksi Java menggabungkan pencarian cepat dari tabel hash dengan urutan iterasi yang dapat diprediksi, berkat daftar berambilan ganda internal yang mempertahankan urutan penyisipan atau akses.
Membuat LinkedHashMap
Untuk menggunakan LinkedHashMap, impor java.util.LinkedHashMap dan buat instance. Konstruktor menerima kapasitas awal, faktor beban, dan opsi flag accessOrder.
// LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap<Key, Value> numbers = new LinkedHashMap<>(8, 0.6f);
Parameter:
- kapasitas – jumlah ember; default adalah 16.
- faktorBeban – memicu pengubahan ukuran saat tabel 60% penuh; default adalah 0.75.
- accessOrder –
false untuk urutan penyisipan, true untuk urutan akses dari yang paling lama ke yang terbaru.
Contoh dengan pengaturan default:
LinkedHashMap<Key, Value> defaultMap = new LinkedHashMap<>();
Membuat LinkedHashMap dari Map yang Ada
Salin map yang ada ke LinkedHashMap untuk mempertahankan urutan:
LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(evenNumbers); numbers.put("Three", 3);
Output:
LinkedHashMap1: {Two=2, Four=4} LinkedHashMap2: {Two=2, Four=4, Three=3}
Operasi Kunci
Menyisipkan Elemen
put(key, value) – menambahkan atau mengganti pemetaan. putIfAbsent(key, value) – menambahkan hanya jika kunci hilang. putAll(map) – menggabungkan map lain.
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(); numbers.put("One", 1); numbers.putIfAbsent("Two", 2); numbers.putAll(evenNumbers);
Mengakses Elemen
Ambil kunci, nilai, atau entri:
entrySet() – semua pasangan kunci/nilai. keySet() – semua kunci. values() – semua nilai. get(key) – nilai atau null jika hilang. getOrDefault(key, default) – pengambilan aman dengan cadangan.
int val = numbers.get("Three"); int def = numbers.getOrDefault("Five", 5);
Menghapus Elemen
remove(key) – hapus berdasarkan kunci. remove(key, value) – hapus hanya jika nilai cocok. clear() – hapus semua. containsKey(key) – pemeriksaan keberadaan. containsValue(value) – pemeriksaan keberadaan. size() – jumlah entri. isEmpty() – pemeriksaan keongosan.
LinkedHashMap vs. HashMap
- LinkedHashMap mempertahankan urutan penyisipan atau akses; HashMap tidak.
- LinkedHashMap menggunakan memori tambahan untuk tautan node.
- Iterasi LinkedHashMap sedikit lebih lambat tetapi menawarkan urutan yang dapat diprediksi.