Was ist LinkedHashMap in Java?
Die LinkedHashMap- Klasse des Collections-Frameworks ist die Hashtable- und LinkedList- Implementierung der Map- Schnittstelle. Es speichert seine Einträge in einer Hashtable und verwendet intern eine doppelt verknüpfte Liste, um die Einfügereihenfolge beizubehalten. Diese LinkedList definiert die Einfügereihenfolge, also die Reihenfolge, in der Schlüssel in die Map eingefügt wurden . Die HashMap bot den Vorteil des schnellen Einfügens , Suchens und Löschens , aber in LinkedHashMap behält die Implementierung von LinkedList auch die Einfügungsreihenfolge bei.
Funktionen von LinkedHashMap
- Es enthält Werte basierend auf dem Schlüssel.
- Es enthält einzigartige Elemente.
- Es kann einen Nullschlüssel und mehrere Nullwerte haben.
- Es ist nicht synchronisiert.
- Die Einfügereihenfolge wird beibehalten, wodurch die Iteration teurer wird.
Leistungsfaktoren
Die Leistung der LinkedHashMap hängt hauptsächlich von zwei Faktoren ab, die im Folgenden beschrieben werden.Kapazität
Die Kapazität bezeichnet die Anzahl der Einträge, die gespeichert werden können. Die Standardkapazität beträgt 16 , wenn kein Parameter angegeben wird. Ladefaktor Der Ladefaktor bedeutet, dass immer dann, wenn die HashMap bis zu einem bestimmten, als Parameter bereitgestellten Prozentsatz gefüllt ist, eine neue HashMap erstellt wird, die doppelt so groß ist, und alle Einträge in diese neue verschoben werden. Der Standardladefaktor für eine HashMap beträgt 0,75 . Es wird auch Füllverhältnis genannt .Deklaration von LinkedHashMap
Um eine LinkedHashMap zu erstellen , müssen wir zunächst das Paket java.util.LinkedHashMap importieren .LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
Hier ist Key der Typ der Schlüssel in der Karte. Wert ist der Typ der zugeordneten Werte in der Karte. 12 ist die Kapazität, was bedeutet, dass 12 Einträge in der Karte gespeichert werden. 0,5f ist der Auslastungsfaktor, was bedeutet, dass bei einer Belegung von 50 % eine neue Karte erstellt und alle Werte in diese neue verschoben werden.
Gängige Methoden von LinkedHashMap
Hier ist eine Liste einiger gängiger Methoden von LinkedHashMap .Methoden | Beschreibung |
---|---|
klar() | Entfernt alle Zuordnungen in der Karte. |
enthältWert(Objektwert) | Gibt true zurück, wenn die Karte den Schlüssel dem angegebenen Wert zuordnet. |
EintragSet() | Gibt die Set-Ansicht der Zuordnungen in der Karte zurück. |
get(Objektschlüssel) | Gibt den Wert für den angegebenen Schlüssel zurück oder null, wenn kein Schlüssel angegeben ist. |
Schlüsselsatz() | Gibt die Set-Ansicht der Schlüssel in der Karte zurück. |
Werte() | Gibt die Sammlungsansicht der Werte in der Karte zurück. |
getOrDefault(Objektschlüssel, V defaultValue) | Gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet ist, oder defaultValue, wenn kein Schlüssel zugeordnet ist. |
LinkedHasMap-Beispiel
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());
}
}
Ausgabe
LinkedHashMap1: {Eins=1, Drei=3} LinkedHashMap2: {Zwei=2, Eins=1, Drei=3} Schlüssel/Wert-Zuordnungen: [Zwei=2, Eins=1, Drei=3] Schlüssel: [Zwei, Eins , Drei] Werte: [2, 1, 3] Zurückgegebene Zahl: 3 Zurückgegebene Zahl: 5 Entfernter Wert: 2 Schlüssel-/Wertzuordnungen: [Eins=1, Drei=3]
LinkedHashMap vs. HashMap
Sehen wir uns einige Unterschiede zwischen ihnen an, wobei beide die Map- Schnittstelle implementieren.- LinkedHashMap behält die Einfügereihenfolge bei, während es die doppelt verknüpfte Liste intern implementiert.
- LinkedHashMap benötigt mehr Speicherplatz, da es LinkedList implementiert .
- Bezüglich der Leistung ist LinkedHashMap langsamer als HashMap .
GO TO FULL VERSION