Java枚举类型

本文介绍了Java中EnumSet和EnumMap的使用,EnumSet作为安全且高效的集合,适用于不可变的枚举元素集合操作;EnumMap则提供了一种根据枚举键存储和获取值的快速方式。此外,还展示了如何为枚举常量定义特定行为的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用EnumSet替代标志:Set是一种集合,只能向其中添加不重复的对象。由于不能从enum中删除或添加元素,java SE5引入EnumSet,EnumSet中的元素必须来自一个enum,具有高品质、类型安全的优势。

enum Season {
    SPRING, SUMMER, AUTUMN, WINTER;
}

public class Test16 {
    public static void main(String[] args) {
        EnumSet<Season> seasons = EnumSet.noneOf(Season.class);
        seasons.add(Season.AUTUMN);
        System.out.println(seasons);
        seasons = EnumSet.allOf(Season.class);
        System.out.println(seasons);
    }
}

2.使用EnumMap:EnumMap要求其中的键(key)必须来自一个enum,它在内部以一个数组存储value,根据enum类型的key直接定位到内部数组的索引。enum的每个实例作为一个键,总是存在的。没有为这个键调用put()方法来存入相应的值的话,其对应的值就是null。

enum Season {
    SPRING, SUMMER, AUTUMN, WINTER;
}

public class Test17 {
    public static void main(String[] args) {
        EnumMap<Season, String> map = new EnumMap<Season, String>(Season.class);
        map.put(Season.SPRING, "春天");
        map.put(Season.SUMMER, "夏天");
        map.put(Season.AUTUMN, "秋天");
        map.put(Season.WINTER, "冬天");
        System.out.println(map);
        System.out.println(map.get(Season.AUTUMN));
    }
}

3.常量相关的方法:可以为enum实例编写方法,为每个实例给出不同的行为。实现常量的相关方法需要为enum定义一个或多个abstract方法,然后在为每个enum实例实现该抽象方法。

public enum Season3 {
    SPRING, SUMMER, AUTUMN, WINTER {
        void a() {
            System.out.println("a()");
        }
    };

    void a() {
        System.out.println("a1()");
    }

    public static void main(String[] args) {
        for (Season3 season : values()) {
            System.out.print(season + ":");
            season.a();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值