Ano ang LinkedHashMap sa Java?
Ang LinkedHashMap class ng Collections framework ay ang Hashtable at LinkedList na pagpapatupad ng Map interface. Iniimbak nito ang mga entry nito sa isang Hashtable at gumagamit ng dobleng naka-link na listahan sa loob upang mapanatili ang pagkakasunud-sunod ng pagpapasok. Tinutukoy ng LinkedList na ito ang insertion order na kung saan ang pagkakasunud-sunod kung saan ang mga key ay ipinasok sa Map . Ang HashMap ay nagbigay ng benepisyo ng mabilis na pagpasok , paghahanap , at pagtanggal ngunit sa LinkedHashMap ang pagpapatupad ng LinkedList ay nagpapanatili din ng pagkakasunud-sunod ng pagpapasok.![LinkedHashMap sa Java - 1](https://cdn.codegym.cc/images/article/32fce3d5-f8bb-4b1a-86e6-6e596f8706e3/256.jpeg)
Mga Tampok ng LinkedHashMap
- Naglalaman ito ng mga halaga batay sa susi.
- Naglalaman ito ng mga natatanging elemento.
- Maaaring mayroon itong isang null key at maramihang null value.
- Ito ay hindi naka-synchronize.
- Pinapanatili nito ang pagkakasunud-sunod ng pagpapasok na nagiging sanhi ng pag-ulit upang maging mas mahal.
Mga Salik sa Pagganap
Ang pagganap ng LinkedHashMap ay pangunahing nakasalalay sa dalawang salik na inilalarawan sa ibaba.Kapasidad
Ang kapasidad ay nangangahulugan ng bilang ng mga entry na maiimbak nito. Ang default na kapasidad ay 16 kung walang ibinigay na parameter. Load factor Ang load factor ay nangangahulugang sa tuwing ang HashMap ay na-populate sa isang partikular na porsyento na ibinigay bilang isang parameter, isang bagong HashMap ang nalilikha na doble ang laki, at lahat ng mga entry ay inililipat sa bagong ito. Ang default na load factor para sa isang HashMap ay 0.75 . Kilala rin ito bilang fill ratio .Deklarasyon ng LinkedHashMap
Upang lumikha ng LinkedHashMap , una, kailangan naming i-import ang package, na java.util.LinkedHashMap .
LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
Dito, ang Key ay ang uri ng mga key sa mapa. Ang halaga ay ang uri ng mga nakamapang halaga sa mapa. 12 ay ang kapasidad na nangangahulugan na ito ay mag-imbak ng 12 mga entry sa mapa. Ang 0.5f ay ang load factor na nangangahulugang kapag 50% ang na-populate, lilikha ito ng bagong Map at ililipat ang lahat ng value sa bagong ito.
Mga Karaniwang Paraan ng LinkedHashMap
Narito ang isang listahan ng ilang karaniwang paraan ng LinkedHashMap .Paraan | Paglalarawan |
---|---|
malinaw() | Tinatanggal ang lahat ng mga pagmamapa sa mapa. |
containsValue(Object value) | Nagbabalik ng true kung imamapa ng mapa ang susi sa tinukoy na halaga. |
entrySet() | Ibinabalik ang Set view ng mga pagmamapa sa mapa. |
get(Object key) | Ibinabalik ang halaga laban sa tinukoy na key o null kung walang key na tinukoy. |
keySet() | Ibinabalik ang Set view ng mga key sa mapa. |
values() | Ibinabalik ang view ng Koleksyon ng mga halaga sa mapa. |
getOrDefault(Object key, V defaultValue) | Ibinabalik ang value kung saan nauugnay ang tinukoy na key o defaultValue kung walang key na nauugnay. |
Halimbawa ng LinkedHasMap
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
// Creating a LinkedHashMap of odd numbers
LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
// Using the put() method
oddNumbers.put("One", 1);
oddNumbers.put("Three", 3);
System.out.println("LinkedHashMap1: " + oddNumbers);
// Creating another LinkedHashMap
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("Two", 2);
// Using putAll() method
numbers.putAll(oddNumbers);
System.out.println("LinkedHashMap2: " + numbers);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet() method
System.out.println("Keys: " + numbers.keySet());
// Using values() method
System.out.println("Values: " + numbers.values());
// Using get() method
int value1 = numbers.get("Three");
System.out.println("Returned Number: " + value1);
// Using getOrDefault() method
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Returned Number: " + value2);
// Using remove() method
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
}
}
Output
LinkedHashMap1: {One=1, Three=3} LinkedHashMap2: {Two=2, One=1, Three=3} Key/Value mappings: [Two=2, One=1, Three=3] Keys: [Two, One , Tatlo] Mga Value: [2, 1, 3] Ibinalik na Numero: 3 Ibinalik na Numero: 5 Inalis na halaga: 2 Key/Value mapping: [Isa=1, Tatlo=3]
LinkedHashMap kumpara sa HashMap
Tingnan natin ang ilang pagkakaiba sa pagitan nila, samantalang parehong nagpapatupad ng Map interface.- Pinapanatili ng LinkedHashMap ang insertion order habang ipinapatupad nito ang dobleng naka-link na listahan sa loob.
- Ang LinkedHashMap ay nangangailangan ng higit pang storage habang ipinapatupad nito ang LinkedList .
- Tungkol sa pagganap, ang LinkedHashMap ay mas mabagal kaysa sa HashMap .