老紫竹JAVA提高教程(5)-认识Set集合之EnumSet
来源:互联网 发布:php开源图片管理系统 编辑:程序博客网 时间:2024/05/21 18:50
原文地址:http://www.java2000.net/p11847
这个类是1.5开始有的,目前个人使用量几乎为零,因为我很少使用枚举,呵呵。我这里也是简单介绍一下而已。其使用方式和普通的Set没有区别,只是构造方法有一些特殊的而已。
- package collection.lession5;
- import java.util.Arrays;
- import java.util.EnumSet;
- import java.util.Set;
- /**
- * 老紫竹JAVA提高教程(5)-认识Set集合之EnumSet。<br>
- * 枚举 set 中所有键都必须来自单个枚举类型<br>
- * 该枚举类型在创建 set 时显式或隐式地指定<br>
- * 迭代顺序是声明时的顺序。<br>
- * 不允许null数据。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public class Lession5 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // 创建一个指定类型的空的集合
- EnumSet<MyEnum> set = EnumSet.noneOf(MyEnum.class);
- set.add(MyEnum.RED);
- set.add(MyEnum.GREEN);
- set.add(MyEnum.BLUR);
- showSet(set);
- // 创建指定类型的所有数据的集合
- EnumSet<MyEnum> set2 = EnumSet.allOf(MyEnum.class);
- showSet(set2);
- // 创建指定类型指定初始数据的集合
- EnumSet<MyEnum> set3 = EnumSet.of(MyEnum.GREEN, MyEnum.RED, MyEnum.WHITE);
- showSet(set3);
- // 创建指定类型,指定范围的集合
- // 包含边界数据
- EnumSet<MyEnum> set4 = EnumSet.range(MyEnum.RED, MyEnum.YELLOW);
- showSet(set4);
- // 集合的用法和普通的没有区别
- }
- /**
- * 显示Set里面的数据。
- *
- * @param set
- */
- private static void showSet(Set set) {
- System.out.println(Arrays.toString(set.toArray()));
- }
- }
- enum MyEnum {
- BLACK, WHITE, RED, BLUR, GREEN, YELLOW
- }
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
- 老紫竹JAVA提高教程(5)-认识Set集合之EnumSet
- 老紫竹JAVA提高教程(1)-认识Set集合
- 老紫竹JAVA提高教程(2)-认识Set集合之HashSet
- 老紫竹JAVA提高教程(3)-认识Set集合之LinkedHashSet
- 老紫竹JAVA提高教程(4)-认识Set集合之TreeSet
- 老紫竹JAVA提高教程(12)-认识Map之HashMap
- 老紫竹JAVA提高教程(13)-认识Map之Hashtable
- 老紫竹JAVA提高教程(14)-认识Map之LinkedHashMap
- 老紫竹JAVA提高教程(6)-认识List列表
- 老紫竹JAVA提高教程(11)-认识Map
- 老紫竹的JAVA提高教程(6)-认识List列表
- 老紫竹JAVA提高教程(7)-认识List列表之ArrayList
- 老紫竹JAVA提高教程(8)-认识List列表之Vector
- 老紫竹JAVA提高教程(9)-认识List列表之LinkedList
- 老紫竹JAVA提高教程(10)-认识List列表之Stack
- 老紫竹JAVA提高教程的说明
- JAVA提高教程(2)-认识Set集合之HashSet
- JAVA提高教程(3)-认识Set集合之LinkedHashSet
- 利用googlecode创建在线subversion版本库
- 分页sql中普通写法和rowid写法的性能比较
- 不让自己显示在彩虹QQ的隐身列表中
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(3) 最大子序列和问题
- 为什么人总是那么现实?有些东西真不会做,可真没有人愿意帮忙。发了也无人问津呢?
- 老紫竹JAVA提高教程(5)-认识Set集合之EnumSet
- Adobe Flex resources
- 动态二进制代码翻译[1][VM Versatile platforms for systems and process]
- NET 4.0中的泛型协变和反变
- 简单IE浏览器的VB实现
- 用VHDL设置引脚刚上电的状态
- quartus中output enable signals不够用的解决方法
- pb自定义事件详细解释
- ERP理论的形成