「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战」
前言
大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。
复制代码
关于Java的集合体系我们已经了解了,接下来我们就开始具体类的学习。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍Java集合的EnumSet枚举类
复制代码
1.1 EnumSet类
EnumSet是一个为枚举类型专用的抽象集合类。在EnumSet不允许加入null元素。EnumSet的集合是有序的,元素顺序和实例化EnumSet集合时的枚举类的元素定义顺序一致。
EnumSet在内部以位向量的形式存储,这种存储表现形式非常紧凑且高效,因此此类的空间和时间性能很好。
1.1.1 获得EnumSet类的对象
EnumSet类是一个抽象类,不能直接new一个对象,但是可以使用EnumSet类的静态方法来获得EnumSet类的实例对象。
方法 | 描述 |
---|---|
static EnumSet allOf(Class elementType) | 创建一个包含指定元素类型的所有元素的Enumset。 |
static EnumSet complementOf(EnumSet s) | 创建一个其元素类型与指定Enumset 相同元素类型的Enumset,包含此枚举类剩余的枚举元素。(即两个EnumSet合起来包含的枚举类的所有元素。) |
static EnumSet copyOf(EnumSets) | 创建一个其元素类型与指定枚举 set 相同的枚举 set,相当于一个副本。 |
static EnumSet copyOf(Collection c) | 创建一个从指定 collection 初始化的Enumset。 |
static EnumSet noneOf(Class elementType) | 创建一个具有指定元素类型的空枚举 set。 |
static EnumSet of(E first, E... rest) | 创建一个最初包含指定元素的枚举 set。从first到rest,可以是一个或多个。 |
static EnumSet range(E from, E to) | 创建一个最初包含由两个指定端点所定义范围内的所有元素的枚举 set。 |
实例展示:
enum WEEKDAY{
MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
}
/**
* @author Poison
*/
public class EnumSetClass {
public static void main(String[] args) {
EnumSet enumSet = EnumSet.allOf(WEEKDAY.class);
//此集合包含枚举类中得到所有元素
System.out.println(enumSet);
EnumSet enumSet1 = EnumSet.noneOf(WEEKDAY.class);
System.out.println("=================================");
//此时该枚举集合为空,手动添加元素
enumSet1.add(WEEKDAY.MONDAY);
System.out.println(enumSet1);
//此集合包含MONDAY枚举元素
EnumSet enumSet2 = EnumSet.of(WEEKDAY.MONDAY);
System.out.println("=================================");
System.out.println(enumSet2);
//此集合包含除了enumSet1中的其他的WEEKDAY中的枚举元素
EnumSet enumSet3 = EnumSet.complementOf(enumSet1);
System.out.println("=================================");
System.out.println(enumSet3);
//此集合包含MONDAY到FRIDAY的枚举元素
EnumSet enumSet4 = EnumSet.range(WEEKDAY.MONDAY,WEEKDAY.FRIDAY);
System.out.println("=================================");
System.out.println(enumSet4);
}
}
复制代码
小结
以上就是关于EnumSet枚举类的一些用法介绍和实例展示,如有不正之处,欢迎留言评论。