Java Vector retainAll()-Methode

Java Vector Java Vector


retainAll()Die Methode ist eineVectorvon der Klasse bereitgestellte Sammlungsoperationsmethode, die verwendet wird, um die Elemente im aktuellen Vektor beizubehalten, die mit denen in der angegebenen Sammlung übereinstimmen, und alle anderen Elemente zu entfernen. Mit anderen Worten, diese Methode ändert den aktuellen Vektor so, dass er nur Elemente enthält, die sowohl dem Vektor als auch der angegebenen Sammlung gemeinsam sind.

Methodensyntax:

public boolean retainAll(Collection<?> c)

Methodenparameter

retainAll()Die Methode akzeptiert einen Parameter:

  • Collection<?> cEine Sammlung, die die beizubehaltenden Elemente enthält. Diese Sammlung kann ein beliebiges Objekt sein, das dieCollectionSchnittstelle, wie z. B.ArrayList、HashSetusw.

Rückgabewert

Diese Methode gibt einen booleschen Wert zurück:

  • truetrue: wenn der aktuelle Vektor durch den Aufruf dieser Methode geändert wurde (d. h. Elemente wurden entfernt)
  • falsefalse: wenn der aktuelle Vector nicht geändert wurde (d. h. alle Elemente waren bereits in der angegebenen Collection vorhanden)

Methodenverhalten

Beim AufrufretainAll()der Methode werden die folgenden Operationen ausgeführt:

  1. Die Methode durchläuft alle Elemente im aktuellen Vector.
  2. Für jedes Element wird geprüft, ob das Element in der Parameter-Collection vorhanden ist.cMittel
  3. Wenn das Element nicht incder Collection existiert, wird es aus dem aktuellen Vector entfernt.
  4. Schließlich wird der aktuelle Vector nur diejenigen Elemente enthalten, die sowohl im Vector selbst als auch im Parameter existierencSammlung.

Beispielcode

Beispiel

import java.util.Vector;
import java.util.Arrays;

public class VectorRetainAllExample {
    public static void main(String[] args) {
        // Ersten Vector erstellen
        Vector<String> vector1 = new Vector<>(Arrays.asList("Apple", "Banana", "Orange", "Grape"));
       
        // Eine zweite Collection erstellen (hier wird List verwendet)
        java.util.List<String> list = Arrays.asList("Banane", "Traube", "Mango");
       
        System.out.println("Original-Vektor: " + vector1);
        System.out.println("Sammlung der beizubehaltenden Elemente: " + list);
       
        // Aufruf der Methode retainAll()
        boolean changed = vector1.retainAll(list);
       
        System.out.println("Rückgabewert der Methode: " + changed);
        System.out.println("Vektor nach der Operation: " + vector1);
    }
}

Ausgabe

原始 Vector: [Apple, Banana, Orange, Grape]
要保留的元素集合: [Banana, Grape, Mango]
方法返回值: true
操作后的 Vector: [Banana, Grape]

Hinweise

  1. Elementvergleich in der Sammlung:retainAll()Die Methode verwendetequals()die equals-Methode, um zu vergleichen, ob Elemente gleich sind. Stellen Sie daher bei benutzerdefinierten Objekten sicher, dass Sie die korrekt implementiert habenequals()undhashCode()Methode.

  2. Parameter-Collection ist null: Wenn die Parameter-Collectioncnull ist, wird eine NullPointerException ausgelöst.NullPointerException。

  3. Nebenläufige Änderung: Wenn die Collection während der Iteration geändert wird (außer durch die eigene des Iteratorsremove()Methode), kann eine ConcurrentModificationException ausgelöst werden.ConcurrentModificationException。

  4. Leistungsüberlegungen: Bei großen Sammlungen kann die Leistung dieser Methode gering sein, da sie die gesamte Sammlung durchlaufen und mehrere Suchvorgänge ausführen muss.


Praktische Anwendungsszenarien

retainAll()Diese Methode ist besonders nützlich in den folgenden Szenarien:

  1. Datenfilterung: Herausfiltern von Elementen, die bestimmte Bedingungen erfüllen, aus einer großen Sammlung.
  2. Schnittmenge von Sammlungen: Berechnung der Schnittmenge zweier Sammlungen.
  3. Berechtigungskontrolle: Beibehalten der aktuell im System verfügbaren Berechtigungen aus der Benutzerberechtigungsliste.

Vergleich mit verwandten Methoden

Methode Beschreibung Ändert die aktuelle Sammlung Bedeutung des Rückgabewerts
retainAll() Behält Elemente, die mit der angegebenen Sammlung identisch sind Ja Ob sie geändert wurde
removeAll() Entfernt Elemente, die mit der angegebenen Sammlung identisch sind Ja Ob sie geändert wurde
containsAll() Prüft, ob sie alle Elemente der angegebenen Sammlung enthält nein Ob alle enthalten sind
addAll() Fügt alle Elemente der angegebenen Sammlung hinzu Ja Ob sie geändert wurde

Zusammenfassung

Vector.retainAll()ist eine leistungsfähige Methode für Sammlungsoperationen, mit der Elemente, die zwei Sammlungen gemeinsam haben, effektiv herausgefiltert werden können. Das Verständnis der Funktionsweise dieser Methode und ihrer Anwendungsszenarien kann Entwicklern helfen, Sammlungsoperationen effizienter zu verarbeiten. Denken Sie daran, den Rückgabewert korrekt zu behandeln und je nach tatsächlichem Bedarf zu entscheiden, ob diese Methode verwendet werden soll.

Java Vector Java Vector

Andere Erweiterungen