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

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

1.package collection.lession5;2.3.import java.util.Arrays;4.import java.util.EnumSet;5.import java.util.Set;6.7./**8. * 老紫竹JAVA提高教程(5)-认识Set集合之EnumSet。9. * 枚举 set 中所有键都必须来自单个枚举类型10. * 该枚举类型在创建 set 时显式或隐式地指定11. * 迭代顺序是声明时的顺序。12. * 不允许null数据。13. *14. * @15. *16. */17.public class Lession5 {18.19. /**20. * @param args21. */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 set50. */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, YELLOW58.}

测试:

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

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

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

总结

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

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

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

走马观花之外,这才是深入体验,探索自我的最佳时间,

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

相关文章:

你感兴趣的文章:

标签云: