Wie man prüft, ob eine Map in Java leer ist

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob eine Map in Java leer ist. Wir werden verschiedene Methoden für diesen häufigen Vorgang untersuchen, beginnend mit der einfachen isEmpty()-Methode. Sie werden auch lernen, wie Sie die Größe einer Map mit der size()-Methode prüfen und, was wichtig ist, wie Sie Fälle behandeln können, in denen die Map selbst null sein könnte, um potenzielle NullPointerException-Fehler zu vermeiden. Am Ende dieses Labs können Sie die Leerheit von Java-Maps in verschiedenen Szenarien sicher bestimmen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashmap("HashMap") subgraph Lab Skills java/operators -.-> lab-559953{{"Wie man prüft, ob eine Map in Java leer ist"}} java/if_else -.-> lab-559953{{"Wie man prüft, ob eine Map in Java leer ist"}} java/collections_methods -.-> lab-559953{{"Wie man prüft, ob eine Map in Java leer ist"}} java/hashmap -.-> lab-559953{{"Wie man prüft, ob eine Map in Java leer ist"}} end

Verwendung von isEmpty() zur Prüfung einer Map

In diesem Schritt lernen wir, wie man prüft, ob eine Map in Java leer ist, indem man die isEmpty()-Methode verwendet. Eine Map ist eine Sammlung von Schlüssel-Wert-Paaren, und die Prüfung, ob sie leer ist, ist ein häufiger Vorgang.

Zunächst erstellen wir eine neue Java-Datei namens MapCheck.java in Ihrem ~/project-Verzeichnis. Sie können dies tun, indem Sie mit der rechten Maustaste im Dateiexplorer links klicken und "Neue Datei" auswählen, und dann MapCheck.java eingeben.

Öffnen Sie jetzt die MapCheck.java-Datei im Editor und fügen Sie folgenden Code hinzu:

import java.util.HashMap;
import java.util.Map;

public class MapCheck {

    public static void main(String[] args) {
        // Create an empty Map
        Map<String, Integer> emptyMap = new HashMap<>();

        // Check if the map is empty using isEmpty()
        boolean isEmpty = emptyMap.isEmpty();

        // Print the result
        System.out.println("Is the map empty? " + isEmpty);

        // Create a non-empty Map
        Map<String, Integer> nonEmptyMap = new HashMap<>();
        nonEmptyMap.put("one", 1);
        nonEmptyMap.put("two", 2);

        // Check if the non-empty map is empty
        boolean isNonEmpty = nonEmptyMap.isEmpty();

        // Print the result
        System.out.println("Is the non-empty map empty? " + isNonEmpty);
    }
}

Lassen Sie uns den Code analysieren:

  • import java.util.HashMap; und import java.util.Map;: Diese Zeilen importieren die notwendigen Klassen, um mit Maps zu arbeiten.
  • Map<String, Integer> emptyMap = new HashMap<>();: Dies erstellt eine neue, leere HashMap. HashMap ist eine häufige Implementierung der Map-Schnittstelle. Wir geben an, dass die Schlüssel String und die Werte Integer sein werden.
  • boolean isEmpty = emptyMap.isEmpty();: Hier verwenden wir die isEmpty()-Methode. Sie gibt true zurück, wenn die Map keine Schlüssel-Wert-Zuordnungen enthält, und false sonst. Das Ergebnis wird in einer booleschen Variable isEmpty gespeichert.
  • System.out.println("Is the map empty? " + isEmpty);: Dies gibt das Ergebnis der Prüfung in die Konsole aus.
  • Der Code wiederholt dann den Vorgang mit einer nonEmptyMap, um zu zeigen, wie isEmpty() funktioniert, wenn die Map nicht leer ist.

Speichern Sie die MapCheck.java-Datei (Strg+S oder Cmd+S).

Öffnen Sie jetzt das Terminal unten im WebIDE. Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden.

Kompilieren Sie den Java-Code mit dem javac-Befehl:

javac MapCheck.java

Wenn keine Fehler auftreten, wird eine MapCheck.class-Datei im ~/project-Verzeichnis erstellt.

Führen Sie schließlich das kompilierte Java-Programm mit dem java-Befehl aus:

java MapCheck

Sie sollten folgende Ausgabe sehen:

Is the map empty? true
Is the non-empty map empty? false

Diese Ausgabe bestätigt, dass isEmpty() die leere Map und die nicht-leere Map korrekt identifiziert hat. Die Verwendung von isEmpty() ist die empfohlene Methode, um zu prüfen, ob eine Map leer ist, da sie klar und effizient ist.

Prüfen der Größe einer Map mit size()

In diesem Schritt lernen wir, wie man die Anzahl der Schlüssel-Wert-Zuordnungen in einer Map mit der size()-Methode ermittelt. Dies ist nützlich, wenn Sie wissen müssen, wie viele Elemente derzeit in der Map gespeichert sind.

Wir werden weiterhin mit der MapCheck.java-Datei arbeiten, die wir im vorherigen Schritt erstellt haben. Öffnen Sie MapCheck.java im WebIDE-Editor.

Jetzt ändern wir die main-Methode, um die Größe der Maps zu prüfen. Ersetzen Sie den bestehenden Code in der main-Methode durch folgenden:

import java.util.HashMap;
import java.util.Map;

public class MapCheck {

    public static void main(String[] args) {
        // Create an empty Map
        Map<String, Integer> emptyMap = new HashMap<>();

        // Check the size of the empty map using size()
        int emptySize = emptyMap.size();

        // Print the result
        System.out.println("Size of the empty map: " + emptySize);

        // Create a non-empty Map
        Map<String, Integer> nonEmptyMap = new HashMap<>();
        nonEmptyMap.put("one", 1);
        nonEmptyMap.put("two", 2);
        nonEmptyMap.put("three", 3); // Add one more element

        // Check the size of the non-empty map
        int nonEmptySize = nonEmptyMap.size();

        // Print the result
        System.out.println("Size of the non-empty map: " + nonEmptySize);
    }
}

Schauen wir uns die Änderungen an:

  • int emptySize = emptyMap.size();: Diese Zeile ruft die size()-Methode auf der emptyMap auf. Die size()-Methode gibt die Anzahl der Schlüssel-Wert-Paare in der Map als Ganzzahl zurück. Das Ergebnis wird in einer Ganzzahlvariablen emptySize gespeichert.
  • System.out.println("Size of the empty map: " + emptySize);: Dies gibt die Größe der leeren Map aus.
  • Wir haben auch ein zusätzliches Element ("three", 3) zur nonEmptyMap hinzugefügt, um zu zeigen, wie sich die Größe ändert.
  • int nonEmptySize = nonEmptyMap.size();: Dies ruft size() auf der nonEmptyMap auf, um deren Größe zu erhalten.
  • System.out.println("Size of the non-empty map: " + nonEmptySize);: Dies gibt die Größe der nicht-leeren Map aus.

Speichern Sie die MapCheck.java-Datei (Strg+S oder Cmd+S).

Öffnen Sie jetzt das Terminal und stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden.

Kompilieren Sie den geänderten Java-Code:

javac MapCheck.java

Wenn die Kompilierung erfolgreich ist, führen Sie das Programm aus:

java MapCheck

Sie sollten folgende Ausgabe sehen:

Size of the empty map: 0
Size of the non-empty map: 3

Diese Ausgabe zeigt, dass size() die Anzahl der Elemente sowohl in der leeren als auch in der nicht-leeren Map korrekt gemeldet hat. Die size()-Methode ist eine einfache und effektive Möglichkeit, die aktuelle Anzahl der Einträge in einer Java-Map zu bestimmen.

Umgang mit Null-Maps

In den vorherigen Schritten haben wir mit Maps gearbeitet, die entweder leer waren oder Elemente enthielten. Es ist jedoch wichtig zu berücksichtigen, was passiert, wenn eine Map-Variable null ist. Ein null-Verweis bedeutet, dass die Variable auf kein Objekt im Speicher zeigt. Wenn Sie versuchen, eine Methode wie isEmpty() oder size() auf einer null-Map aufzurufen, führt dies zu einer NullPointerException, einem häufigen Fehler in Java.

In diesem Schritt lernen wir, wie man potenzielle null-Map-Verweise sicher behandelt, bevor man versucht, ihre Leerheit oder Größe zu prüfen.

Öffnen Sie erneut die MapCheck.java-Datei im WebIDE-Editor.

Fügen wir Code hinzu, um eine null-Map zu demonstrieren und zu behandeln. Ändern Sie die main-Methode wie folgt:

import java.util.HashMap;
import java.util.Map;

public class MapCheck {

    public static void main(String[] args) {
        // Create an empty Map
        Map<String, Integer> emptyMap = new HashMap<>();

        // Check the size of the empty map using size()
        int emptySize = emptyMap.size();

        // Print the result
        System.out.println("Size of the empty map: " + emptySize);

        // Create a non-empty Map
        Map<String, Integer> nonEmptyMap = new HashMap<>();
        nonEmptyMap.put("one", 1);
        nonEmptyMap.put("two", 2);
        nonEmptyMap.put("three", 3); // Add one more element

        // Check the size of the non-empty map
        int nonEmptySize = nonEmptyMap.size();

        // Print the result
        System.out.println("Size of the non-empty map: " + nonEmptySize);

        // Declare a Map variable but don't initialize it (it will be null)
        Map<String, Integer> nullMap = null;

        // --- Handling the null map ---

        // Check if the map is null before calling methods
        if (nullMap == null) {
            System.out.println("The nullMap is null.");
        } else {
            // This block will not be executed for nullMap
            System.out.println("Is the nullMap empty? " + nullMap.isEmpty());
            System.out.println("Size of the nullMap: " + nullMap.size());
        }

        // A safer way to check if a map is empty (handles null)
        boolean isNullMapEmpty = (nullMap == null || nullMap.isEmpty());
        System.out.println("Is the nullMap considered empty (including null)? " + isNullMapEmpty);

        // A safer way to get the size (handles null)
        int nullMapSize = (nullMap == null) ? 0 : nullMap.size();
        System.out.println("Size of the nullMap (handling null): " + nullMapSize);
    }
}

Hier ist, was wir hinzugefügt haben:

  • Map<String, Integer> nullMap = null;: Dies deklariert eine Map-Variable und setzt sie explizit auf null.
  • if (nullMap == null) { ... }: Dies ist der entscheidende Teil für den Umgang mit null. Wir prüfen, ob die nullMap-Variable null ist, bevor wir versuchen, irgendeine Methode auf ihr aufzurufen. Wenn sie null ist, geben wir eine Nachricht aus. Wenn sie nicht null wäre, würde der else-Block ausgeführt werden, und wir könnten sicher isEmpty() und size() aufrufen.
  • boolean isNullMapEmpty = (nullMap == null || nullMap.isEmpty());: Dies ist ein gängiges Muster, um zu prüfen, ob eine Map effektiv "leer" ist, was auch den Fall umfasst, dass der Map-Verweis selbst null ist. Der || (ODER)-Operator bedeutet, dass wenn nullMap == null wahr ist, der gesamte Ausdruck wahr ist und nullMap.isEmpty() gar nicht ausgewertet wird, wodurch die NullPointerException vermieden wird.
  • int nullMapSize = (nullMap == null) ? 0 : nullMap.size();: Dies verwendet den ternären Operator (? :), um die Größe sicher zu erhalten. Wenn nullMap null ist, ergibt der Ausdruck 0. Andernfalls ergibt er nullMap.size().

Speichern Sie die MapCheck.java-Datei (Strg+S oder Cmd+S).

Kompilieren Sie den geänderten Code im Terminal:

javac MapCheck.java

Führen Sie das Programm aus:

java MapCheck

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Size of the empty map: 0
Size of the non-empty map: 3
The nullMap is null.
Is the nullMap considered empty (including null)? true
Size of the nullMap (handling null): 0

Beachten Sie, dass die Zeilen im else-Block für nullMap nicht ausgeführt wurden und dass wir erfolgreich geprüft haben, ob die nullMap null war und ihre Größe (wobei null als Größe 0 behandelt wird) erhalten haben, ohne einen Fehler zu verursachen.

Der Umgang mit null-Verweisen ist in Java sehr wichtig, um NullPointerExceptions zu vermeiden und Ihre Programme robuster zu machen. Überlegen Sie immer, ob eine Variable null sein könnte, bevor Sie Methoden auf ihr aufrufen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob eine Map in Java leer ist. Wir haben die primäre Methode dafür, isEmpty(), untersucht, die direkt angibt, ob eine Map Schlüssel-Wert-Paare enthält. Wir haben gesehen, wie man diese Methode sowohl auf neu erstellte leere Maps als auch auf Maps anwendet, die mit Daten befüllt wurden, und so ihre einfache Verwendung und das zurückgegebene boolesche Ergebnis demonstriert.

Neben der grundlegenden isEmpty()-Prüfung haben wir auch alternative Methoden behandelt, wie das Verwenden von size() zur Bestimmung, ob die Größe einer Map null ist, was funktionell äquivalent zur Prüfung auf Leerheit ist. Darüber hinaus haben wir das entscheidende Aspekt des Umgangs mit potenziellen null-Map-Verweisen angesprochen, um NullPointerExceptions zu vermeiden, und betont, wie wichtig es ist, vor dem Aufruf von Methoden auf einem Map-Objekt eine Null-Prüfung durchzuführen.