Java教程-Java EnumSet类

Java EnumSet类
Java EnumSet类是专门用于枚举类型的Set实现。它继承自AbstractSet类并实现了Set接口。
EnumSet类层次结构
EnumSet类的层次结构如下图所示。
EnumSet类声明
让我们来看一下java.util.EnumSet类的声明。
- public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, Serializable
Java EnumSet类的方法
方法 | 描述 |
---|---|
static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType) | 创建一个包含指定元素类型中的所有元素的枚举集合。 |
static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c) | 从指定集合中创建一个初始化的枚举集合。 |
static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) | 创建一个具有指定元素类型的空枚举集合。 |
static <E extends Enum<E>> EnumSet<E> of(E e) | 创建一个最初包含指定元素的枚举集合。 |
static <E extends Enum<E>> EnumSet<E> range(E from, E to) | 创建一个最初包含指定元素的枚举集合。 |
EnumSet<E> clone() | 返回此集合的副本。 |
Java EnumSet示例
1. **import** java.util.*;
2. **enum** days {
3. SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
4. }
5. **public** **class** EnumSetExample {
6. **public** **static** **void** main(String[] args) {
7. Set<days> set = EnumSet.of(days.TUESDAY, days.WEDNESDAY);
8. // 遍历元素
9. Iterator<days> iter = set.iterator();
10. **while** (iter.hasNext())
11. System.out.println(iter.next());
12. }
13. }
输出:
TUESDAY
WEDNESDAY
Java EnumSet示例: allOf()和noneOf()
1. **import** java.util.*;
2. **enum** days {
3. SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
4. }
5. **public** **class** EnumSetExample {
6. **public** **static** **void** main(String[] args) {
7. Set<days> set1 = EnumSet.allOf(days.**class**);
8. System.out.println("Week Days:"+set1);
9. Set<days> set2 = EnumSet.noneOf(days.**class**);
10. System.out.println("Week Days:"+set2);
11. }
12. }
输出:
Week Days:[SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY]
Week Days:[]