2010-09-07 11 views
11

Wenn ich eine Enum habe, kann ich eine EnumSet mit der handliche EnumSet KlasseKombination Java EnumSets

enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES } 
EnumSet<Suit> reds = EnumSet.of(Suit.HEARTS, Suit.DIAMONDS); 
EnumSet<Suit> blacks = EnumSet.of(Suit.CLUBS, Suit.SPADES); 

Geben Sie zwei EnumSets schaffen, wie kann ich ein neues EnumSet schaffen, die die Vereinigung der beiden dieser Sätze enthält?

EnumSet<Suit> redAndBlack = ?

Antwort

21

Ein EnumSet ist auch eine Sammlung, so dass Sie viele der Sammlung API verwenden können, als auch, wie addAll nennt.

EnumSet<Suit> redAndBlack = EnumSet.copyOf(reds); 
redAndBlack.addAll(blacks); 
5

In diesem Fall könnten Sie auch

EnumSet<Suit> redAndBlack = EnumSet.allOf(Suit.class) 
+2

verwenden Dies ist richtig, die Frage beantwortet, und für einige Leser hilfreich sein kann. Warum wurde es abgelehnt? –

+0

@MichaelScheper: Dies ist nicht die Vereinigung der beiden Sätze, es ist der ursprüngliche Satz. In diesem Fall sind sie gleichwertig, aber Sie haben Recht. Wenn ich raten müsste, würde ich sagen, dass der Grund dafür ist, weil dies angezeigt wird, wenn Sie java enum union suchen. – Jpatrick

+1

@Jpatrick:: nicken: Es scheint rachsüchtig und albern, jemanden für die Beantwortung der OP-Frage zu bestrafen, wenn es anders ist, als sie gefragt wurden. Aber es wurde in den letzten 24 Stunden klar, wie viele Hasser es auf der Welt gibt, also sollte ich nicht überrascht sein. –