Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 302|回复: 0

[集合学习]老紫竹的JAVA提高教程(5)-认识Set集合之EnumSet

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-31 23:56:07 | 显示全部楼层 |阅读模式
    这个类是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
    }[/code]

    测试:
    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://file.javaxxz.com/2014/10/31/235607390.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-18 23:01 , Processed in 0.374834 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表