Java Vector retainAll()-Methode
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:
- Die Methode durchläuft alle Elemente im aktuellen Vector.
- Für jedes Element wird geprüft, ob das Element in der Parameter-Collection vorhanden ist.
cMittel - Wenn das Element nicht in
cder Collection existiert, wird es aus dem aktuellen Vector entfernt. - Schließlich wird der aktuelle Vector nur diejenigen Elemente enthalten, die sowohl im Vector selbst als auch im Parameter existieren
cSammlung.
Beispielcode
Beispiel
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
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.Parameter-Collection ist null: Wenn die Parameter-Collection
cnull ist, wird eine NullPointerException ausgelöst.NullPointerException。Nebenläufige Änderung: Wenn die Collection während der Iteration geändert wird (außer durch die eigene des Iterators
remove()Methode), kann eine ConcurrentModificationException ausgelöst werden.ConcurrentModificationException。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:
- Datenfilterung: Herausfiltern von Elementen, die bestimmte Bedingungen erfüllen, aus einer großen Sammlung.
- Schnittmenge von Sammlungen: Berechnung der Schnittmenge zweier Sammlungen.
- 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