Wie berechnet man den Schnittpunkt zweier Mengen? [duplicate]

Lesezeit: 2 Minuten

Wie berechnet man den Schnittpunkt zweier Mengen duplicate
Benutzer496949

Mögliches Duplikat:

Effizientes Finden des Schnittpunkts einer variablen Anzahl von Zeichenfolgensätzen

Angenommen, Sie haben zwei Hashsets, wie berechnet man deren Schnittmenge?

Set<String> s1 = new HashSet<String>();

Set<String> s2 = new HashSet<String>();

S1 INT S2 ?

  • Um fair zu sein, ist dies eine viel bessere Frage als das Original. Klar, gut geschrieben und auf den Punkt gebracht. Auch wenn die letztendliche Antwort dieselbe ist, besteht die andere Frage nur aus Worten – und konzentriert sich auf die Effizienz, nicht nur darauf, die Arbeit zu erledigen. Für Java 8+ ist dies jedoch möglicherweise die bessere Antwort: stackoverflow.com/a/39902694/1339923

    – Lambert

    8. Januar 19 um 18:22 Uhr


Wie berechnet man den Schnittpunkt zweier Mengen duplicate
Bohemien

Verwenden Sie die retainAll() Methode von Set:

Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets

Wenn Sie die Sätze beibehalten möchten, erstellen Sie eine Neu eingestellt, um die Kreuzung zu halten:

Set<String> intersection = new HashSet<String>(s1); // use the copy constructor
intersection.retainAll(s2);

Der javadoc von retainAll() sagt, es ist genau das, was Sie wollen:

Behält nur die Elemente in diesem Satz bei, die in der angegebenen Sammlung enthalten sind (optionaler Vorgang). Mit anderen Worten, entfernt aus diesem Satz alle seine Elemente, die nicht in der angegebenen Sammlung enthalten sind. Wenn die angegebene Sammlung auch eine Menge ist, Diese Operation modifiziert diesen Satz effektiv, so dass sein Wert der ist Überschneidung der beiden Sätze.

  • Nur ein Hinweis für alle, die RetainAll für eine andere Sammlung verwenden möchten, z. B. eine Liste mit doppelten Elementen. Abhängig vom Inhalt der Sammlung können Sie eine UnsupportedOperationException auslösen, und es werden auch Frequenzen nicht korrekt gefiltert (es behält alle Vorkommen eines Werts im linken Multiset bei, unabhängig davon, wie oft es im rechten Multiset vorkommt).

    – Allison

    17. Januar 18 um 9:54 Uhr


Wie berechnet man den Schnittpunkt zweier Mengen duplicate
Emmanuel N

ja da ist retainAll Kasse Dies

Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);

.

704620cookie-checkWie berechnet man den Schnittpunkt zweier Mengen? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy