Prüfen ob min. ein Element eines Sets in einem anderen Set enh

8u3631984

Bekanntes Mitglied
Java:
        Set<String> set1 = Set.of("a", "b", "c", "d");
        Set<String> set2 = Set.of("c", "b");

        System.out.println(set1.contains(set2));

Ich möchte wissen ob min. ein Element aus einem Set (hier set2) in einem anderen Set (set 1) enthalten ist.
Die contains Funktion liefert leider false zurück.

Gibt es eine einfache Möglichkeit dies zu prüfen ?
 
Wie ist das? Vergleicht contains() nicht einfach nur die Referenzen und wenn vom Kompiler dem "b" im set2 eine eigene Referenz zuordnet, klappt der Vergleich nicht? Ist so meine Vermutung
 
Der obige contains Aufruf im Start-Post, überprüft ob das Objekt set2 im set1 enthalten ist. Das natürlich nicht enthalten, weil set2 ist ein Objekt vom Typ Set und das set1 enthält nur Strings. Also wird da offensichtlich false rauskommen.

Und nein, contains vergleicht nicht referenzen

Returns true if this set contains the specified element. More formally, returns true if and only if this set contains an element e such that Objects.equals(o, e).

String-Konstanten haben auch immer die gleiche Referenz (Von obskuren Konstrukten mit multiplen Classloadern mal abgesehen)
 
Collections.disjoint(set1, set2)

Liefert true, wenn es keine Überschneidungen gibt.

 

Zurück
Oben