2012-05-26 50 views
2

糾正我,如果我錯了:Java的枚舉:多個值在一個時間

  1. 枚舉是一種
  2. 一些枚舉類型的對象可以一次取1,只有1枚舉值

現在我有一個問題:假設 我定義一個枚舉(或其他一些數據結構,是適合的任務,我不能說出來,因爲我在尋找這樣的數據結構來完成以下任務)在我的Java程序中的某處。如果,在某種程度上,我在main(String [])中有一個枚舉(或其他一些數據結構)對象,並且我希望它獲取enum(或其他某種數據結構)的多個值,那麼我該怎麼做呢?如果不是枚舉,我應該使用哪種合適的數據結構?

在此先感謝!

回答

7

你可以使用一個簡單的數組,從核心java.util API也將做的工作任何集合(如列表或套,這比使用數組更方便一點),但可能你是什麼後EnumSet

enum Monster { 
    GOBLIN, ORC, OGRE; 
} 

public class Main { 
    public static void main(final String[] args) { 
     final EnumSet<Monster> bigGuys = EnumSet.of(Monster.ORC, Monster.OGRE); 

     for (final Monster act : Monster.values()) { 
      System.out.println(bigGuys.contains(act)); 
     } 
    } 
} 
+1

是 - EnumSet的優點在於它具有內置的優化功能,例如,一組低值的枚舉被作爲一個位掩碼來實現。 –

+0

Sry,編輯,一個Goblin不應該在'bigguys'設置:-) – rlegendi

+0

yeap,正是我要找的!感謝代碼段。 – h9uest

2

聽起來像是你正在尋找任:

  • java.util.EnumSet
  • 可變參數:method(MyEnum ...values)
  • 一個簡單的數組:MyEnum[]

我通常喜歡在自己java.util.EnumSet,它易於使用,並且可以快速檢查是否含有一定valaue等,這是對標誌or一個替補多爲好。

+0

感謝您提供如此多的人選,Pulsar! – h9uest