EnumSet是一个枚举类型的集合类,他和一般的Set集合不同,它的特点是速度非常快,为什么速度很快呢?因为每次add的时候,每个枚举值只占一个长整型的一位。
    常见的一些EnumSet操作

    1. package item36;
    2. import java.util.EnumSet;
    3. /**
    4. * @author: qujundong
    5. * @date: 2020/12/5 下午9:44
    6. * @description:
    7. */
    8. public class Text {
    9. private enum Style{BOLD, ITALIC, UNDERLINE, STRIKETHROUGH}
    10. public static void main(String[] args) {
    11. //创建空的EnumSet
    12. EnumSet<Style> styles = EnumSet.noneOf(Style.class);
    13. System.out.println(styles);
    14. styles.add(Style.BOLD);
    15. styles.add(Style.ITALIC);
    16. System.out.println(styles);
    17. //创建一个枚举类中所有元素的EnumSet
    18. EnumSet<Style> styles1 = EnumSet.allOf(Style.class);
    19. System.out.println(styles1);
    20. //创建一个范围的EnumSet
    21. EnumSet<Style> styles2 = EnumSet.range(Style.BOLD, Style.UNDERLINE);
    22. System.out.println(styles2);
    23. //获得styles2的补集
    24. EnumSet<Style> styles3 = EnumSet.complementOf(styles2);
    25. System.out.println(styles3);
    26. //复制一下style3
    27. EnumSet<Style> styles4 = EnumSet.copyOf(styles3);
    28. System.out.println(styles4);
    29. }
    30. }

    总结:EnumSet其实就是一个专门针对于枚举类的集合Set,因为底层直接安位操作,所以速度会很快,但是EnumSet目前有个缺陷,在Java9版本之前无法创建一个不可变的EnumSet。