EnumSet
和 EnumMap
枚举类
目录
EnumSet
EnumSet
是基于位向量(bit vector)的集合实现,专为枚举类型设计,提供了非常高效的内存和性能表现。EnumSet
不允许包含 null
元素,并且所有元素都必须是枚举常量。
创建 EnumSet
- 使用
EnumSet
的静态工厂方法来创建集合实例。
EnumSet<Day> allDays = EnumSet.allOf(Day.class); // 包含所有枚举常量
EnumSet<Day> noDays = EnumSet.noneOf(Day.class); // 不包含任何枚举常量
EnumSet<Day> someDays = EnumSet.of(Day.MONDAY, Day.FRIDAY); // 包含指定的枚举常量
EnumSet 操作
EnumSet
提供了标准的集合操作方法,如add
,remove
,contains
,size
等。
EnumSet<Day> weekDays = EnumSet.of(Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY, Day.FRIDAY);
weekDays.add(Day.SATURDAY); // 添加元素
weekDays.remove(Day.FRIDAY); // 删除元素
boolean containsSunday = weekDays.contains(Day.SUNDAY); // 检查是否包含元素
EnumSet
还提供了位操作,如and
,or
,xor
和complement
。
EnumSet<Day> weekEnds = EnumSet.of(Day.SATURDAY, Day.SUNDAY);
EnumSet<Day> allDays = EnumSet.allOf(Day.class);
EnumSet<Day> weekDaysAndWeekEnds = weekDays.clone(); // 克隆集合
weekDaysAndWeekEnds.addAll(weekEnds); // 合并两个集合
EnumSet<Day> onlyWeekDays = weekDaysAndWeekEnds.clone();
onlyWeekDays.retainAll(weekDays); // 保留两个集合共有的元素
EnumMap
EnumMap
是一种基于枚举键的特殊 Map
实现,它提供了比 HashMap
更高效的键操作。EnumMap
的键必须是枚举类型,而值可以是任意类型。
创建 EnumMap
- 使用
EnumMap
的构造函数来创建实例。
EnumMap<Day, String> dayNames = new EnumMap<>(Day.class);
EnumMap 操作
EnumMap
提供了标准的Map
操作方法,如put
,get
,remove
,keySet
,values
,entrySet
等。
dayNames.put(Day.MONDAY, "Monday");
String name = dayNames.get(Day.MONDAY); // 获取与键关联的值
dayNames.remove(Day.MONDAY); // 删除键值对
EnumMap
的键集、值集和 entry 集都是通过枚举类来遍历的。
for (Day day : dayNames.keySet()) {
System.out.println(day + ": " + dayNames.get(day));
}
标签:weekDays,EnumSet,枚举,EnumMap,dayNames,Day
From: https://www.cnblogs.com/luoyiwen123/p/18347808