首页 > 其他分享 >`EnumSet` 和 `EnumMap` 枚举类

`EnumSet` 和 `EnumMap` 枚举类

时间:2024-08-07 20:06:38浏览次数:13  
标签:weekDays EnumSet 枚举 EnumMap dayNames Day

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));
}

标签:weekDays,EnumSet,枚举,EnumMap,dayNames,Day
From: https://www.cnblogs.com/luoyiwen123/p/18347808

相关文章

  • 枚举
    枚举的定义在Java中,枚举(enum)是一种特殊的类,它可以用来定义一组常量。枚举类型是Java语言的关键字,用于定义枚举类型。枚举类型提供了一种方式,可以保证变量的值只能是预定义的常量集合中的一个。以下是枚举的一些基本特性和用法:定义枚举:枚举类型定义使用enum关键字publicenum......
  • 洛谷B3621枚举元组
    一道经典dfs题,很简单就是让你求1~k能组成多少个n位数。当然耐心足够的朋友可以尝试打表。dfs思路:1.定义数组a来存储每一次的组合,其中a[i]表示第i位的数字;3.递归一定要设定终止条件:如果枚举到了n+1位时,输出数组a并returnCode#include<bits/stdc++.h>usingnamespa......
  • 枚举
    枚举枚举(Enum)是Java中一种特殊的数据类型,它允许程序员定义一个有限的、可枚举的数据集。枚举类型提供了一种更强大、更安全和更易读的方式来表示一组相关的常量。以下是关于Java中枚举的详细解释:一、枚举的定义在Java中,枚举类型是通过使用enum关键字来定义的。枚举类型的定义通......
  • 枚举
    枚举1.枚举的定义Java中的枚举(Enumeration)是一种特殊的数据类型,用于定义一组有限的命名常量。枚举提供了一种更直观、更可读的方式来表示一组相关的常量,并且可以为这些常量绑定其他数据或行为。枚举是在JDK1.5(Java5)以后引入的,它是对之前使用常量(如publicstaticfinal变量)表示......
  • 枚举声明
    枚举Java枚举知识点概念enum的全称为enumeration,是JDK1.5中引入的新特性。在Java中,被enum关键字修饰的类型就是枚举类型。形式如下:enumColor{RED,GREEN,BLUE}如果枚举不添加任何方法,枚举值默认为从0开始的有序数值。以Color枚举类型举例,它的枚举常量依......
  • C语言day11(string函数族、递归函数、结构体、共用体、枚举)
    【1】string函数族1.strlen头文件:#include<string.h>格式:size_tstrlen(constchar*s);功能:计算字符串实际长度,不包括\0参数:s:目标字符串首地址返回值:字符串实际长度2.strcpy    头文件:#include<string.h>    格式:char*strcpy(char*dest,......
  • 可用于机器学习的排列组合枚举算法含passcal - c shap-c源码
    可用于机器学习的排列组合枚举算法含passcal-cshap-c源码1机器学习和数据挖掘• 特征选择:在机器学习中,需要从多个特征中选择最有价值的组合。通过枚举不同的特征组合,可以找到最佳的特征集合。• 超参数优化:在训练模型时,需要调整多个超参数。通过枚举不同的超参数组......
  • C自定义类型(结构体,联合体,枚举)详解
            在C语言中,数据类型可以分为内置类型(charshortintlongfloatdouble...)和自定义类型。内置类型是由编程语言本身定义的基本数据类型,而自定义类型是由程序员根据需要创建的数据类型。    自定义类型:  结构体,联合体(共用体),枚举。结构体:用于组......
  • 枚举
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceMR.View{classProgram{enumenXingQi{星期一=1,星期二=2,星期三=3,星期四=4,......
  • java基础6—抽象类、接口、枚举
    1.抽象类1.1简介        由于继承这个显著特点,我们可以将子类设计的更加具体,而父类更加一般化,通用化。父类可以封装不同子类的共同特征或者共同行为。而有的时候,父类中封装的方法无法具体完成子类中需要的逻辑,因此我们可以将此方法设计成抽象方法,即使用关键字abstra......