枚举集合的EnumSet

在上一篇博客文章中,我们发现了EnumMap用于带有枚举键的映射。 您可能已经观察到,还有一个专门针对枚举优化的SetEnumSet

我们再次定义一个CoffeeType枚举:

public enum CoffeeType {
    ESPRESSO, POUR_OVER, FRENCH_PRESS, LATTE, FLAT_WHITE
}

现在,我们可以使用EnumSet实现创建此枚举类型的集合:

Set<CoffeeType> favoriteCoffeeTypes = EnumSet.of(ESPRESSO, POUR_OVER, LATTE);

assertThat(favoriteCoffeeTypes).containsOnly(ESPRESSO, POUR_OVER, LATTE);

favoriteCoffeeTypes仍然像任何Set一样起作用,也就是说,添加重复项不会更改其内容:

favoriteCoffeeTypes.add(POUR_OVER);

assertThat(favoriteCoffeeTypes).containsOnly(ESPRESSO, POUR_OVER, LATTE);

有趣的旁注:如果您研究JDK,则会看到EnumSetRegularEnumSetJumboEnumSet都实现了; 枚举元素的数量决定了所使用的实现。 如果您对EnumSet实现如何高效管理感兴趣,我挑战您看看这些类。 提示:按位操作:-)

这篇帖子从我的时事通讯018中转贴了。

翻译自: https://www.javacodegeeks.com/2018/01/enumset-enum-collections.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值