【Java】EnumSet的使用

news2024/10/5 13:44:44

一、什么是EnumSet?

EnumSet是用于枚举类的专用Set集合。
它实现了Set接口并且继承AbstractSet。

当计划使用EnumSet时,必须考虑以下几点:
1、它只能包含枚举值,并且所有值必须属于同一个枚举。
2、它不允许添加 null,在尝试这样做时会抛出NullPointerException。
3、它不是线程安全的,所以如果需要,我们需要在外部同步它。
4、元素按照在枚举中声明的顺序存储。
5、它使用在副本上工作的fail-safe迭代器,因此如果在迭代时修改了集合,它不会抛出ConcurrentModificationException。

二、为什么要使用EnumSet?

作为一个经验法则,当我们存储枚举值时,EnumSet应该总是优先于任何其他Set实现。

EnumSet是一个公共抽象类,它包含多个允许我们创建实例的静态工厂方法。JDK提供了两种不同的实现,是package-private和支持bit vector的:

  • RegularEnumSet
  • JumboEnumSet

RegularEnumSet使用一个long来表示位向量。long元素的每一位代表枚举的一个值。枚举的第i个值将存储在第i位,因此很容易知道值是否存在。由于long是64位数据类型,因此该实现最多可以存储64个元素。

另一方面,JumboEnumSet使用long elements数组作为位向量。这允许该实现存储超

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringCloud AlibabaSentinel实现熔断与限流】

本笔记内容为尚硅谷SpringCloud AlibabaSentinel部分 目录 一、Sentinel 1、官网 2、Sentinel是什么 3、下载 4、特性 5、使用 二、安装Sentinel控制台 1、sentinel组件由2部分构成 2、安装步骤 1.下载 2.运行命令 3.访问sentinel管理界面 三、初始化演示工程 …

KVM虚拟机的磁盘无损扩容方法-qcow2格式的

起因:我的KVM主机上安装了基于Debian11的 虚拟机母鸡,其他虚拟机都由此克隆而来。因为最初只配置了8G的虚拟硬盘,因此在需要占用比较大的空间的应用时,就比较麻烦。度娘等中文搜索结果没找到答案,只能google了。 这里…

JVM系统优化实践(16):线上GC案例(一)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ 列举几个实际使用案例说一下GC的问题。一个高峰期每秒10万QPS的社交APP,个人主页模块是流量最大的那个,而一次个人主页的查询&#xff0c…

python文本自动伪原创-ai一键伪原创

chatgpt批量伪原创的优势 ChatGPT是一个由OpenAI开发的强大的自然语言处理模型,它具有批量伪原创的优势,以下是这些优势: 模型能够处理大量的数据:ChatGPT通过训练大规模的语言模型来生成伪原创文本。这个模型拥有一个庞大的语料…

MySQL:varchar与date类型互转,对接java数据类型String和Date

目录 问题现象: 问题分析: varchar 转 date : date 转 varchar: 解决方法: varchar 转 date : date 转 varchar: 问题现象: 今天在项目中遇到一个问题: 现象&…

将DataTable中的数据保存到Excel (二) 使用NPOI

文章目录 背景1 NPOI 简介2 使用NPOI2.1 创建一个简单的工作簿2.2 简单的读取内容2.3 将DataTable数据导出到Excel(NPOI)2.4 Excel(NPOI)导入到DataTable 3 NPOI 总结 背景 前面写过一篇DataTable导出到Excel的文章,使用的是Office COM组件进行导入导出&#xff0c…

第五章 法律规范

目录 第一节 法律规则 一、法律规范与法律规则的概念辨析二、法律规则的逻辑结构 (一)假定:(二)行为模式:(三)法律后果: 三、法律规则与法律条文的关系 (想法…

【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用

😉博主:初映CY的前说(前端领域) ,📒本文核心:用原生js实现省市区联动 【前言】在通用的后台管理项目的开发中,不仅仅是会涉及到对表单数据等的增删改查操作还会涉及到一些关于权限管理的问题。我们将基于一个RBAC的思维…

FPGA设计实战演练.高级技巧篇-----读书笔记

第一章 从PCB开始研究FPGA设计问题 一、PCB布线 1、要求 对所有器件进行电源滤波,均匀分配电源,降低系统噪声。 匹配信号线,减小信号反射。 降低并行走线之间的串扰。 减小地反弹效应。 进行阻抗匹配。 2、微带传输布局,走…

全景丨0基础学习VR全景制作,平台篇第六章:全局功能-开场提示

大家好欢迎观看蛙色平台使用教程 编辑器功能位置 1、功能说明 开场提示是指VR漫游作品加载好以后,进入到全景里面时,优先展示的图像。 PC端/移动端,均可设置起到指引用户的作用。 2、功能要用在哪? (1)场…

无人机影像处理流程

无人机由于其方便快捷,精度高等特点已经广泛应用于农田尺度的作物生长监测。尤其是近年来大疆推出了两个多光谱无人机,价格也相较便宜。但目前无人机的使用实际上需要进一步处理才能获取得到农田的基本信息,主要包括影像的校正和图像拼接&…

FME教程:GIS建筑面转CAD格式JMD,还原房屋建筑结构、层数、地物样式,shp转CAD,GIS转dwg

GIS数据转CAD数据,是经常遇到的需求,但是CAD数据形式与GIS相差甚远,因此GIS转CAD后,要还原图形样式和地物属性便成为了一个难点。 今天介绍使用FME进行shp格式房屋面数据转dwg格式的JMD图层的方法。实现房屋的地物样式、结构、层…

Android studio Activity启动模式

1.四种启动模式: 1).standard(标准模式) 特点:1.Activity的默认启动模式 2.每启动一个Activity就会在栈顶创建一个新的实例。例如:闹钟程序 缺点:当Activity已经位于栈顶时…

C#模拟实现输出进销存管理系统中的每月销售明细(实验五)

实验五:模拟实现输出进销存管理系统中的每月销售明细 任务要求: 运行程序,输入要查询的月份,如果输入的月份正确,则显示本月商品销售明细;如果输入的月份不存在,则提示“该月没有销售数据或者…

什么是企业数智化的创新加速器?

数智商业创新,使得企业的发展模式有了一个更大的跃升。在数智化转型热潮中,打造数据驱动的智慧企业,实现商业创新与转型升级,构建企业新的竞争优势成为这一阶段企业管理者的核心诉求。围绕这一核心诉求,企业关键要考虑…

javascript通过canvas实现不同时区的时钟绘制

这里使用Javascript的class和canvas技术实现时钟的绘制,并且通过类实例来实现不同时区的时间显示,增强复用性。 如下图: 一、基本知识 在绘制前,我们先熟悉下本次使用到的Canvas相关基础知识,以便后面更好理解并使用。…

Bill Gates 和 Linus Torvalds 同时推崇的编程语言,不可复制的经典

1 缘起 “我们为什么没有这样的东西?!” -- Bill Gates 1988年春天,Alan Copper坐在微软的大会议室中,给Bill Gates和微软的十几名员工做了一次著名的演示。 这是个叫做Tripod的开发工具,控制面板上面是一些按钮&…

电视剧是大众文化娱乐的载体,情感、喜剧、悬疑,你钟爱哪种题材?

电视剧作为一种重要的文化娱乐产品,一直以来都受到了人们的热爱和关注。它们通过故事情节、角色塑造、美术设计等方面的表现,向观众展现了生活中的各种情感和经历,同时也传递了一些价值观和思想观念 做为低成本的的娱乐方式,能够为…

1. 数据结构与算法概述

1. 数据结构与算法概述 1.1 什么是数据结构? 官方解释: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。 大白话: 数据结构就是把数据元素按照一定的关系组织起来的集合…

讲真的,我哭死,搞了一个画图软件

文章目录 👵回来咯👴一起画图吧👱画图软件👼项目地址 专栏Python零基础入门篇🔥Python网络蜘蛛🔥Python数据分析Django基础入门宝典🔥小玩意儿🔥Web前端学习tkinter学习笔记Excel自动…