enumset
在上一篇博客文章中,我们发现了EnumMap
用于带有枚举键的映射。 您可能已经观察到,还有一个专门针对枚举优化的Set
: EnumSet
。
我们再次定义一个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,则会看到EnumSet
由RegularEnumSet
和JumboEnumSet
都实现了; 枚举元素的数量决定了所使用的实现。 如果您对EnumSet
实现如何高效管理感兴趣,我挑战您看看这些类。 提示:按位操作:-)
这篇帖子从我的时事通讯018中转贴了。
翻译自: https://www.javacodegeeks.com/2018/01/enumset-enum-collections.html
enumset