`EnumSet` 和 `EnumMap` 枚举类

EnumSetEnumMap 枚举类

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, xorcomplement
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));
}
posted @ 2024-08-07 19:58  wen-210162704027  阅读(3)  评论(0编辑  收藏  举报