Bestimmen gemeinsamer Elemente aus mehreren Listen
In Java müssen Sie möglicherweise gemeinsame Elemente finden, die von mehreren Listen gemeinsam genutzt werden. Dies kann ein nützlicher Vorgang für Aufgaben wie das Vergleichen von Datensätzen oder das Identifizieren von Schnittpunkten sein. In diesem Artikel wird ein effizienter Ansatz zum Abrufen der gemeinsamen Elemente zwischen zwei Listen mithilfe des Collections-Frameworks von Java untersucht.
Betrachten Sie zunächst das Szenario, in dem Sie über zwei ArrayList-Objekte verfügen, die jeweils drei Ganzzahlen enthalten. Ihr Ziel ist es, die Elemente zu finden und zurückzugeben, die in beiden Listen vorhanden sind.
Lösung: Collection#retainAll()
Eine der einfachsten Möglichkeiten, dies zu erreichen erfolgt über die Methode Collection#retainAll(). Diese Methode ändert die aufrufende Sammlung, indem sie alle Elemente entfernt, die nicht auch im angegebenen Sammlungsparameter vorhanden sind.
listA.retainAll(listB);
Nach der Ausführung des obigen Codes enthält listA nur die Elemente, die sowohl listA als auch listB gemeinsam haben .
Alternativer Ansatz: Erstellen einer neuen Sammlung
Wenn Sie den ursprünglichen Inhalt von erhalten müssen listA können Sie eine neue Sammlung erstellen, die die gemeinsamen Elemente enthält:
List<Integer> common = new ArrayList<>(listA); common.retainAll(listB);
In diesem Fall enthält die gemeinsame Liste nur die Elemente, die sowohl in listA als auch in listB vorhanden sind, während der ursprüngliche Inhalt von listA erhalten bleibt intakt.
Stream-basierte Lösung
Java 8 führte eine leistungsstarke Stream-API ein, die eine deklarative Art der Verarbeitung bietet und Manipulation von Sammlungen. Sie können die Methode stream#filter() nutzen, um Elemente basierend auf einem bestimmten Prädikat zu filtern:
List<Integer> common = listA.stream().filter(listB::contains).toList();
Dieser streambasierte Ansatz führt eine Filteroperation für jedes Element in ListeA durch und prüft, ob es in ListeB vorhanden ist die Methode enthält(). Die resultierende Liste enthält nur die gemeinsamen Elemente zwischen ListeA und ListeB.
Das obige ist der detaillierte Inhalt vonWie kann ich in Java effizient gemeinsame Elemente zwischen mehreren Listen finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!