Prüfe Enumsets für gleiche Enum-Werte [duplizieren]

7

Ich habe zwei EnumSet s.

%Vor%

Ich möchte herausfinden, welche Werte in beiden Mengen existieren. (In diesem Fall A3 .)

Gibt es einen schnellen Weg, das zu tun?

    
gts13 28.07.2014, 13:12
quelle

4 Antworten

9

EnumSet ist ein Satz. So können Sie wahrscheinlich retainAll Methode, um die Kreuzung zu bekommen.

  

Behält nur die Elemente in dieser Gruppe bei, die in der angegebenen Auflistung enthalten sind (optionale Operation). Mit anderen Worten: Entfernt alle Elemente, die nicht in der angegebenen Sammlung enthalten sind. Wenn die angegebene Auflistung ebenfalls eine Menge ist, ändert diese Operation diese Menge effektiv so, dass ihr Wert die Schnittmenge der beiden Mengen ist.

Beachten Sie, dass dadurch die vorhandene Sammlung geändert wird. Wenn Sie das nicht möchten, können Sie eine Kopie erstellen. Wenn das keine gute Option für Sie ist, können Sie nach anderen Lösungen suchen.

    
Swapnil 28.07.2014, 13:18
quelle
7
%Vor%

retainAll ändert die zugrunde liegende Menge, also erstellen Sie eine Kopie.

    
jMcK 28.07.2014 13:19
quelle
7

Da EnumSets Subtypen von Iterable sind, können Sie CollectionUtils aus Apaches Collections (häufig verwendete Third-Party-Bibliothek) dafür verwenden.

%Vor%     
F. Böller 28.07.2014 13:18
quelle
6

Sie können die Stream-API in Java 8 verwenden:

%Vor%     
fabian 28.07.2014 13:25
quelle

Tags und Links