Java LinkedHashMap Klasse: Ein freundlicher Leitfaden für Anfänger

Einführung

Hallo daar, zukünftige Java-Zauberer! Heute werden wir eine spannende Reise in die Welt der LinkedHashMap antreten. Keine Sorge, wenn du noch nie einen Codezeilen geschrieben hast – ich werde dein freundlicher Guide sein, und wir werden dieses Thema gemeinsam Schritt für Schritt erkunden. Am Ende dieses Tutorials wirst du erstaunt sein, wie viel du gelernt hast!

Java - LinkedHashMap

LinkedHashMap ist wie eine magische Box, die deine Artikel (wir nennen sie in der Programmierung Schlüssel-Wert-Paare) in einer bestimmten Reihenfolge speichern kann. Stell dir vor, du organisiere deine Lieblingsbücher auf einem Regal. Nicht nur kannst du schnell jedes Buch finden, das du möchtest, sondern du kannst sie auch in der Reihenfolge behalten, in der du sie hinzugefügt hast, oder basierend darauf, wie oft du sie liest. Genau das macht die LinkedHashMap für unsere Daten!

Klassendeklaration

Lassen Sie uns damit beginnen, wie man eine LinkedHashMap in Java deklariert:

import java.util.LinkedHashMap;

public class MeinLinkedHashMapBeispiel {
public static void main(String[] args) {
LinkedHashMap<String, Integer> meinBücherregal = new LinkedHashMap<>();
}
}

In diesem Beispiel erstellen wir eine LinkedHashMap namens meinBücherregal. Der Teil <String, Integer> teilt Java mit, dass wir String-Schlüssel (Buchtitel) und Integer-Werte (vielleicht die Anzahl der Seiten) verwenden. Keine Sorge, wenn das jetzt verwirrend aussieht – wir werden das im Laufe der Zeit aufbrechen!

Parameter

Beim Arbeiten mit LinkedHashMap haben wir einige Parameter zu berücksichtigen:

  1. initialCapacity: Dies ist wie die Entscheidung, wie groß dein Bücherregal initial sein sollte.
  2. loadFactor: Stell dir vor, wie voll dein Bücherregal werden kann, bevor du ein größeres benötigst.
  3. accessOrder: Dies bestimmt, ob deine Bücher nach dem Hinzufügen oder nach der Häufigkeit des Zugriffs angeordnet werden.

Sehen wir uns ein Beispiel an:

LinkedHashMap<String, Integer> meinBücherregal = new LinkedHashMap<>(16, 0.75f, true);

Hier sagen wir, dass unser initialles Bücherregal 16 Bücher halten kann, wir einen größeren Regal in Betracht ziehen, wenn es zu 75% voll ist, und wir die Bücher basierend auf der Häufigkeit des Zugriffs anordnen möchten.

Klassenkonstruktoren

LinkedHashMap bietet mehrere Möglichkeiten, unser magisches Bücherregal zu erstellen. Hier sind die Hauptkonstruktoren:

  1. LinkedHashMap(): Erstellt eine leere LinkedHashMap mit Standardeinstellungen.
  2. LinkedHashMap(int initialCapacity): Gibt die initial Capacity an.
  3. LinkedHashMap(int initialCapacity, float loadFactor): Gibt sowohl die initial Capacity als auch den Load Factor an.
  4. LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder): Gibt alle drei Parameter an.
  5. LinkedHashMap(Map<? extends K, ? extends V> m): Erstellt eine LinkedHashMap mit denselben Mappings wie die angegebene Karte.

Lassen Sie uns versuchen, LinkedHashMaps mit verschiedenen Konstruktoren zu erstellen:

LinkedHashMap<String, Integer> regal1 = new LinkedHashMap<>();
LinkedHashMap<String, Integer> regal2 = new LinkedHashMap<>(20);
LinkedHashMap<String, Integer> regal3 = new LinkedHashMap<>(20, 0.8f);
LinkedHashMap<String, Integer> regal4 = new LinkedHashMap<>(20, 0.8f, true);

Map<String, Integer> existingMap = new HashMap<>();
existingMap.put("Java Basics", 200);
LinkedHashMap<String, Integer> regal5 = new LinkedHashMap<>(existingMap);

Jeder dieser erstellt ein leicht unterschiedliches "Bücherregal" basierend auf unseren Bedürfnissen. Ist es nicht erstaunlich, wie flexibel Java ist?

Klassenmethoden

Nun schauen wir uns einige der am häufigsten verwendeten Methoden in LinkedHashMap an. Ich werde sie in einer Tabellenform für eine einfache Referenz präsentieren:

Methode Beschreibung
put(K key, V value) Fügt ein neues Schlüssel-Wert-Paar zur LinkedHashMap hinzu
get(Object key) Ruft den Wert ab, der dem angegebenen Schlüssel zugeordnet ist
remove(Object key) Entfernt die Zuordnung für den angegebenen Schlüssel
clear() Entfernt alle Zuordnungen von der LinkedHashMap
size() Gibt die Anzahl der Schlüssel-Wert-Paare in der LinkedHashMap zurück
isEmpty() Gibt true zurück, wenn die LinkedHashMap leer ist
containsKey(Object key) Gibt true zurück, wenn die LinkedHashMap den angegebenen Schlüssel enthält
containsValue(Object value) Gibt true zurück, wenn die LinkedHashMap den angegebenen Wert enthält
keySet() Gibt ein Set aller Schlüssel in der LinkedHashMap zurück
values() Gibt eine Sammlung aller Werte in der LinkedHashMap zurück
entrySet() Gibt ein Set aller Schlüssel-Wert-Paare in der LinkedHashMap zurück

Sehen wir uns einige dieser Methoden in Aktion an:

LinkedHashMap<String, Integer> meinBücherregal = new LinkedHashMap<>();

// Bücher zu unserem Regal hinzufügen
meinBücherregal.put("Java Basics", 200);
meinBücherregal.put("Data Structures", 350);
meinBücherregal.put("Algorithms", 400);

// Die Anzahl der Seiten für "Java Basics" abrufen
int javaSeiten = meinBücherregal.get("Java Basics");
System.out.println("Java Basics hat " + javaSeiten + " Seiten.");

// Überprüfen, ob wir ein Buch über Python haben
boolean hatPython = meinBücherregal.containsKey("Python for Beginners");
System.out.println("Haben wir ein Python-Buch? " + hatPython);

// Das Algorithms-Buch entfernen
meinBücherregal.remove("Algorithms");

// Alle Buchtitel drucken
for (String titel : meinBücherregal.keySet()) {
System.out.println("Buchtitel: " + titel);
}

Dieser Codeabschnitt zeigt, wie wir Bücher zu unserem Regal hinzufügen, Informationen darüber abrufen, überprüfen, ob wir bestimmte Bücher haben, Bücher entfernen und alle Bücher aufzählen, die wir haben. Ziemlich praktisch, nicht wahr?

Vererbte Methoden

LinkedHashMap vererbt auch Methoden von ihren Elternklassen. Hier sind einige wichtige:

Vererbt von Methoden
HashMap clone(), compute(), computeIfAbsent(), computeIfPresent(), merge()
AbstractMap equals(), hashCode(), toString()
Object finalize(), getClass(), notify(), notifyAll(), wait()

Diese vererbten Methoden bieten zusätzliche Funktionen, die in bestimmten Situationen sehr nützlich sein können.

Beispiel zum Abrufen eines Wertes aus der LinkedHashMap

Lassen Sie uns mit einem vollständigen Beispiel abrunden, bei dem wir eine LinkedHashMap erstellen, einige Werte hinzufügen und diese abrufen:

import java.util.LinkedHashMap;

public class BücherregalBeispiel {
public static void main(String[] args) {
LinkedHashMap<String, Integer> meinBücherregal = new LinkedHashMap<>();

// Bücher zu unserem Regal hinzufügen
meinBücherregal.put("Java Basics", 200);
meinBücherregal.put("Data Structures", 350);
meinBücherregal.put("Algorithms", 400);

// Informationen zu jedem Buch abrufen und ausgeben
for (String titel : meinBücherregal.keySet()) {
int seiten = meinBücherregal.get(titel);
System.out.println("Das Buch '" + titel + "' hat " + seiten + " Seiten.");
}

// Ein bestimmtes Buch abrufen
String buchZuFinden = "Data Structures";
if (meinBücherregal.containsKey(buchZuFinden)) {
int seiten = meinBücherregal.get(buchZuFinden);
System.out.println("\nGefunden! '" + buchZuFinden + "' hat " + seiten + " Seiten.");
} else {
System.out.println("\nEntschuldigung, wir haben '" + buchZuFinden + "' nicht auf unserem Regal.");
}
}
}

Ausgabe

Wenn du diesen Code ausführst, wirst du eine Ausgabe ähnlich dieser sehen:

Das Buch 'Java Basics' hat 200 Seiten.
Das Buch 'Data Structures' hat 350 Seiten.
Das Buch 'Algorithms' hat 400 Seiten.

Gefunden! 'Data Structures' hat 350 Seiten.

Und da hast du es! Du hast gerade dein eigenes digitales Bücherregal mit LinkedHashMap erstellt. Du kannst Bücher hinzufügen, herausfinden, wie viele Seiten sie haben, und sogar überprüfen, ob ein bestimmtes Buch auf deinem Regal ist. Ist Programmierung nicht erstaunlich?

Denke daran, genau wie beim Organisieren eines realen Bücherregals, je mehr du mit LinkedHashMap übst, desto mehr wirst du dich daran wohlfühlen. Hab keine Angst, zu experimentieren und verschiedene Dinge auszuprobieren. Happy coding, zukünftige Java-Experten!

Credits: Image by storyset