Java LinkedList size() Methode

Java LinkedList Java LinkedList


size()Die Methode ist in JavaLinkedListeine häufig verwendete Methode, die von der Klasse bereitgestellt wird und zumjava.utilPaket gehört. Der Hauptzweck dieser Methode ist es, die Anzahl der Elemente in der aktuellen verknüpften Liste zurückzugeben.

Methodensyntax:

public int size()

Rückgabewert:

  • Gibt zurückinteinen Wert des Typs, der die Anzahl der Elemente in der verknüpften Liste darstellt
  • Wenn die verknüpfte Liste leer ist, gibt sie 0 zurück

Methodeneigenschaften

Zeitkomplexität

size()Die Zeitkomplexität der Methode ist O(1), was bedeutet, dass die Zeit zum Abrufen der Größe konstant ist, egal wie viele Elemente die verknüpfte Liste enthält.

Das liegt daran, dassLinkedListdie Klasse intern einesizeVariable verwaltet, die automatisch aktualisiert wird, wenn Elemente hinzugefügt oder entfernt werden. Der Aufrufsize()der Methode gibt einfach den Wert dieser Variable zurück.

Unterschied zur Array-Länge

Anfänger verwechseln manchmalsize()die Methode mit der Array-lengthEigenschaft:

  • Die Länge des Arrayslengthist eine Eigenschaft, die die Kapazität des Arrays darstellt
  • LinkedListvonsize()ist eine Methode, die die Anzahl der tatsächlich gespeicherten Elemente zurückgibt

Threadsicherheit

size()Die Methode selbst ist nicht threadsicher. Wenn sie in einer Multithread-Umgebung verwendet wird, sind zusätzliche Synchronisationsmaßnahmen erforderlich.


Anwendungsbeispiele

Grundlegende Verwendung

Beispiel

import java.util.LinkedList;

public class LinkedListSizeDemo {
    public static void main(String[] args) {
        // Erstelle eine LinkedList
        LinkedList<String> fruits = new LinkedList<>();
       
        // Elemente hinzufügen
        fruits.add("Apfel");
        fruits.add("Banane");
        fruits.add("Orange");
       
        // Verwenden Sie die Methode size(), um die Anzahl der Elemente zu erhalten
        int size = fruits.size();
        System.out.println("Anzahl der Elemente in LinkedList: " + size); // Ausgabe: 3
    }
}

Fall einer leeren verketteten Liste

Beispiel

import java.util.LinkedList;

public class EmptyLinkedListDemo {
    public static void main(String[] args) {
        LinkedList<Integer> numbers = new LinkedList<>();
        System.out.println("Größe der leeren verketteten Liste: " + numbers.size()); // Ausgabe: 0
    }
}

Demonstration dynamischer Änderungen

Beispiel

import java.util.LinkedList;

public class DynamicSizeDemo {
    public static void main(String[] args) {
        LinkedList<Character> letters = new LinkedList<>();
        System.out.println("Anfangsgröße: " + letters.size()); // 0
       
        letters.add('A');
        letters.add('B');
        System.out.println("Nach dem Hinzufügen von zwei Elementen: " + letters.size()); // 2
       
        letters.removeFirst();
        System.out.println("Nach dem Entfernen eines Elements: " + letters.size()); // 1
       
        letters.clear();
        System.out.println("Nach dem Leeren: " + letters.size()); // 0
    }
}

Häufige Fragen

Löst die Methode size() eine Ausnahme aus?

size()Die Methode löst normalerweise keine Ausnahme aus. Selbst wenn die verkettete Liste null ist (Hinweis: keine leere verkettete Liste), wird der Aufrufsize()der Methode keine Ausnahme auslösen, sondern eine auslösenNullPointerException。

Beispiel

LinkedList<String> list = null;
// Die folgende Zeile löst eine NullPointerException aus
System.out.println(list.size());

Beziehung zwischen size() und isEmpty()

isEmpty()Die Methode basiert aufsize()die Implementierung der Methode:

Beispiel

public boolean isEmpty() {
    return size() == 0;
}

Daher,list.isEmpty()ist äquivalent zulist.size() == 0, aber die erstere ist besser lesbar.


Praktische Anwendungsszenarien

Schleifendurchlauf

Beispiel

LinkedList<String> colors = new LinkedList<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");

for (int i = 0; i < colors.size(); i++) {
    System.out.println(colors.get(i));
}

Kapazitätsprüfung

Beispiel

LinkedList<Integer> queue = new LinkedList<>();
// ...Elemente hinzufügen...

if (queue.size() > 10) {
    System.out.println("Warteschlange ist voll, es können keine weiteren Elemente hinzugefügt werden");
}

Vergleich mit anderen Sammlungen

Beispiel

LinkedList<String> list1 = new LinkedList<>();
LinkedList<String> list2 = new LinkedList<>();

// ...zwei verkettete Listen füllen...

if (list1.size() == list2.size()) {
    System.out.println("Die beiden verketteten Listen haben die gleiche Größe");
}

Leistungsüberlegungen

Obwohlsize()die Methode selbst hat eine Zeitkomplexität von O(1), in manchen Fällen kann häufiges Aufrufensize()Auswirkungen auf die Leistung haben:

  1. Multithreaded-Umgebung: jeder Aufruf vonsize()muss die im Arbeitsspeicher befindlichesizevariable
  2. Komplexe Schleifenbedingungen: wie z. B.for (int i = 0; i < list.size(); i++), es bei jeder Schleifeniteration aufzurufensize()

Für den zweiten Fall kann es wie folgt optimiert werden:

Beispiel

int size = list.size();
for (int i = 0; i < size; i++) {
    // Schleifenkörper
}

Zusammenfassung

LinkedListvonsize()Die Methode ist eine einfache, aber sehr wichtige Methode, die die Möglichkeit bietet, schnell die aktuelle Anzahl von Elementen in einer verknüpften Liste zu ermitteln. Das Verständnis der Funktionsweise und der Eigenschaften dieser Methode hilft, effizienteren und zuverlässigeren Java-Code zu schreiben.

Denken Sie daran:

  • size()Sie gibt die Anzahl der Elemente zurück, nicht die Kapazität
  • Einer leeren verknüpften Listesize()gibt 0 zurück
  • Bei der Verwendung in einer Multithread-Umgebung müssen Sie auf Synchronisierungsprobleme achten
  • Sie kann kombiniert werden mitisEmpty()Methode, um den Code klarer zu machen

Java LinkedList Java LinkedList

Andere Erweiterungen