JAVA程序员提高教程(5)-认识Set集合之EnumSet

    作者:课课家教育更新于: 2016-02-01 14:20:12

    大神带你学编程,欢迎选课

      这个类是1.5开始有的,目前个人使用量几乎为零,因为我很少使用枚举,呵呵。我这 里也是简单介绍一下而已。其使用方式和普通的Set没有区别,只是构造方法有一些特殊 的而已。

    JAVA程序员提高教程(5)-认识Set集合之EnumSet_java课程标准_21天学通java_课课家

      1.package collection.lession5;

      2.

      3.import java.util.Arrays;

      4.import java.util.EnumSet;

      5.import java.util.Set;

      6.

      7./**

      9. * 枚举 set 中所有键都必须来自单个枚举类型

      10. * 该枚举类型在创建 set 时显式或隐式地指定

      11. * 迭代顺序是声明时的顺序。

      12. * 不允许null数据。

      13. *

      15. *

      16. */

      17.public class Lession5 {

      18.

      19. /**

      20. * @param args

      21. */

      22. public static void main(String[] args) {

      23. // 创建一个指定类型的空的集合

      24. EnumSet set = EnumSet.noneOf(MyEnum.class);

      25. set.add(MyEnum.RED);

      26. set.add(MyEnum.GREEN);

      27. set.add(MyEnum.BLUR);

      28. showSet(set);

      29.

      30. // 创建指定类型的所有数据的集合

      31. EnumSet set2 = EnumSet.allOf(MyEnum.class);

      32. showSet(set2);

      33.

      34. // 创建指定类型指定初始数据的集合

      35. EnumSet set3 = EnumSet.of(MyEnum.GREEN, MyEnum.RED, MyEnum.WHITE);

      36. showSet(set3);

      37.

      38. // 创建指定类型,指定范围的集合

      39. // 包含边界数据

      40. EnumSet set4 = EnumSet.range(MyEnum.RED, MyEnum.YELLOW);

      41. showSet(set4);

      42.

      43. // 集合的用法和普通的没有区别

      44. }

      45.

      46. /**

      47. * 显示Set里面的数据。

      48. *

      49. * @param set

      50. */

      51. private static void showSet(Set set) {

      52. System.out.println(Arrays.toString(set.toArray()));

      53. }

      54.}

      55.

      56.enum MyEnum {

      57. BLACK, WHITE, RED, BLUR, GREEN, YELLOW

      58.}

      测试:

      1 自己书写 copyOf(Collection c) 和 complementOf(EnumSet s) 的使用方式

      2 测试在EnumSet.of 是否允许有重复值,是编译报错还是运行报错

      3 测试 EnumSet.range 是否起点大于终点,也就是反向的range,看编译错误还是运 行错误

      总结

      如果我们要用到对枚举类型的集合处理,这个当然是很好的选择。可惜我自己目前还 用不到,以后在项目里,根据情况再确定吧。

      如果range起点大于重点,出现如下的异常信息:

      Exception in thread "main" java.lang.IllegalArgumentException: RED > BLACK

课课家教育

未登录