快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

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

时间:2011-04-07 csdn 老紫竹

这个类是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。<br> 9. * 枚举 set 中所有键都必须来自单个枚举类型<br> 10. * 该枚举类型在创建 set 时显式或隐式地指定<br> 11. * 迭代顺序是声明时的顺序。<br> 12. * 不允许null数据。 13. * 14. * @author 老紫竹 JAVA世纪网(java2000.net) 15. * 16. */ 17.public class Lession5 { 18. 19. /** 20. * @param args 21. */ 22. public static void main(String[] args) { 23. // 创建一个指定类型的空的集合 24. EnumSet<MyEnum> 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<MyEnum> set2 = EnumSet.allOf(MyEnum.class); 32. showSet(set2); 33. 34. // 创建指定类型指定初始数据的集合 35. EnumSet<MyEnum> set3 = EnumSet.of(MyEnum.GREEN, MyEnum.RED, MyEnum.WHITE); 36. showSet(set3); 37. 38. // 创建指定类型,指定范围的集合 39. // 包含边界数据 40. EnumSet<MyEnum> 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<E> c) 和 complementOf(EnumSet<E> s) 的使用方式

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

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

总结

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

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

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号