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