Попробуйте EnumSet
"Специализированная реализация набора для использования с типами перечислений. Все элементы в наборе перечислений должны происходить из одного типа перечисления, который указан явно или неявно, при создании набора. Наборы перечислений представляются внутри как битовые векторы. Это представление чрезвычайно компактно и эффективно. Производительность этого класса по пространству и времени должна быть достаточно хорошей, чтобы его можно было использовать каккачественная, безопасная для типов альтернатива традиционным основанным на int «битовым флагам». Даже массовые операции (такие как containsAll и retainAll) должны выполняться очень быстро, если указанная коллекция также является набором перечислений. "