EnumSet是一个枚举类型的集合类,他和一般的Set集合不同,它的特点是速度非常快,为什么速度很快呢?因为每次add的时候,每个枚举值只占一个长整型的一位。
常见的一些EnumSet操作
package item36;
import java.util.EnumSet;
/**
* @author: qujundong
* @date: 2020/12/5 下午9:44
* @description:
*/
public class Text {
private enum Style{BOLD, ITALIC, UNDERLINE, STRIKETHROUGH}
public static void main(String[] args) {
//创建空的EnumSet
EnumSet<Style> styles = EnumSet.noneOf(Style.class);
System.out.println(styles);
styles.add(Style.BOLD);
styles.add(Style.ITALIC);
System.out.println(styles);
//创建一个枚举类中所有元素的EnumSet
EnumSet<Style> styles1 = EnumSet.allOf(Style.class);
System.out.println(styles1);
//创建一个范围的EnumSet
EnumSet<Style> styles2 = EnumSet.range(Style.BOLD, Style.UNDERLINE);
System.out.println(styles2);
//获得styles2的补集
EnumSet<Style> styles3 = EnumSet.complementOf(styles2);
System.out.println(styles3);
//复制一下style3
EnumSet<Style> styles4 = EnumSet.copyOf(styles3);
System.out.println(styles4);
}
}
总结:EnumSet其实就是一个专门针对于枚举类的集合Set,因为底层直接安位操作,所以速度会很快,但是EnumSet目前有个缺陷,在Java9版本之前无法创建一个不可变的EnumSet。