Java LinkedList size() Methode
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:
Rückgabewert:
- Gibt zurück
inteinen 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 Arrays
lengthist 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
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
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
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
// 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
return size() == 0;
}
Daher,list.isEmpty()ist äquivalent zulist.size() == 0, aber die erstere ist besser lesbar.
Praktische Anwendungsszenarien
Schleifendurchlauf
Beispiel
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
// ...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> 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:
- Multithreaded-Umgebung: jeder Aufruf von
size()muss die im Arbeitsspeicher befindlichesizevariable - 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
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 Liste
size()gibt 0 zurück - Bei der Verwendung in einer Multithread-Umgebung müssen Sie auf Synchronisierungsprobleme achten
- Sie kann kombiniert werden mit
isEmpty()Methode, um den Code klarer zu machen
Java LinkedList