2010-09-07 65 views
11

如果我有一個枚舉,我可以使用便捷的EnumSet類結合的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); 

舉兩個EnumSets創建一個EnumSet,我怎麼可以創建一個新的EnumSet包含這兩個組的聯盟?

EnumSet<Suit> redAndBlack = ?

回答

21

的EnumSet也是一個集合,所以你可以使用許多收藏的API調用爲好,如中的addAll。

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

在這種情況下,你也可以使用

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

這是正確的,回答了這個問題,並可能對某些讀者有所幫助。它爲什麼被低估? – 2014-01-10 02:43:04

+0

@MichaelScheper:這不是兩套的結合,它是原始的集合。在這種情況下,它們是等價的,但你是對的。 如果我不得不猜測,我會說這是downvoted的原因是因爲這是當你搜索Java枚舉聯合彈出。 – Jpatrick 2016-11-07 20:57:19

+1

@Jpatrick:點頭:看起來有些鬥氣和愚蠢,因爲回答OP的問題時,懲罰了某人,因爲這與他們希望得到的問題不同。但是在過去的24小時內,世界上有多少仇敵已經清楚了,所以我不應該感到驚訝。 – 2016-11-09 20:02:43