Java 中 BitSet 类的用法
Java 中 BitSet 类的用法
- API
- 构造
- 置位为 true
- 清除为 false
- 查找
- 位反转
- 长度
- 运算
- 流
- 其他
- 原理
- 底层数据结构
- 如何工作
API
构造
- 无参构造 :默认为 64 个 bit 的容量
BitSet bitset = new BitSet();
- 有参构造 :设置为 n 个 bit 的容量
BitSet bitset = new BitSet(1024);
- 静态工厂的 valueOf 构造 :支持从
byte[],long[],ByteBuffer,LongBuffer四种类型构造Bitset
BitSet.valueOf(bytes);BitSet.valueOf(longs);BitSet.valueOf(byteBuffer);BitSet.valueOf(longBuffer);
置位为 true
- 单独置位
bitset.set(4);//索引为4的位置的比特被置为1,返回void
- 批量置位
bitset.set(4,6);//索引在[4,6)范围内的位置的比特被置为1,返回void
清除为 false
- 单独清除
bitset.clear(4);//索引为4的位置的比特被置为0,返回void
- 批量清除
bitset.clear(4,6);//索引在[4,6)范围内的位置的比特被置为0,返回void
- 全部清除
bitset.clear();//所有位置都被清空为0,返回void
查找
- 查询某一位是否已被置位
bitset.get(4);//返回boolean,为true表示该位被置位
- 获取某区间的 BitSet
bitset.get(4,6);//返回另一个 BitSet,内容取 bitset的[4,6)之间的元素
注:获取的区间后,索引的编号会改变,比如这里新的 BitSet 的 0 号索引对应的是原来 BitSet 的 4 号索引
位反转
bitset.flip(4);bitset.flip(4,6);
长度
有三个和长度相关的 API,分别是 size、cardinal、length
- size:返回该 BitSet 的最大容量
- cardinal:返回该 BitSet 中 1 的个数
- length:返回最后一个1之前的所有元素的个数,如果一个1也没有就返回0
运算
- 判断是否有交集
first.intersects(second);//返回boolean,如果有交集元素则为true
- 求交集
first.and(second);//返回一个 BitSet
- 求并集
first.or(second);//返回一个 BitSet
- 求异或集
first.xor(second);//返回一个 BitSet
流
bitSet.stream();//返回一个 Stream 流
其他
下面四个方法顾名思义:
int idx = bitset.nextSetBit(fromIndex);int idx = bitset.previousSetBit(fromIndex); int idx = bitset.nextClearBit(fromIndex);int idx = bitset.previousClearBit(fromIndex);
原理
底层数据结构
BitSet 的底层数据结构是 long[] 数组
如何工作
置位时,把1左移对应的位数,再与 long[] 中特定的 long 元素做或运算
查询时,把1左移对应的位数,再与 long[] 中特定的 long 元素做与运算,运算结果大于0说明该位为true
相关文章:
Java 中 BitSet 类的用法
Java 中 BitSet 类的用法 API构造置位为 true清除为 false查找位反转长度运算流其他 原理底层数据结构如何工作 API 构造 无参构造 :默认为 64 个 bit 的容量 BitSet bitset new BitSet();有参构造 :设置为 n 个 bit 的容量 BitSet bitset new BitSe…...
Jenkins-pipeline流水线构建完钉钉通知
添加钉钉机器人 在钉钉群设置里添加机器人拿出Webhook地址,设置关键词 Jenkins安装钉钉插件 Dashboard > 系统管理 > 插件管理,搜索构建通知,直接搜索Ding Talk也行 安装DingTalk插件,重启Jenkins 来到Dashboard > 系…...
汽车制造业供应商管理会面临哪些问题?要如何解决?
汽车行业的供应链是及其复杂的,并且呈全球化分布,企业在知识产权方面的优势很可能是阶段性的。企业需要持续保持领先,将面临巨大的挑战,尽快地将产品推向市场是保持领先的唯一途径。然而,如果没有正确的方式去实现安全…...
day28|93. 复原 IP 地址|Leetcode 78. 子集|90.子集II
Leetcode 93. 复原 IP 地址 链接:93. 复原 IP 地址 class Solution { public:vector<string> res;string path;int pointNum 0;vector<string> restoreIpAddresses(string s) {backtracking(0, s);return res;}void backtracking(int start, string …...
怎样提升小程序日活?签到抽奖可行吗?
一、 日活运营策略 小程序应该是即用即走的,每个小程序都在用户中有自己的独特定位,可能是生活日常必备(美食、团购、商城),也可能是工作办公必备(文档、打卡、工具)。 如果你想要让自己的小程…...
hive语法树分析,判断 sql语句中有没有select *
pom依赖参考以下博文java 通过 IMetaStoreClient 取 hive 元数据信息-CSDN博客1 节点处理器类 import lombok.Getter; import org.apache.hadoop.hive.ql.lib.Dispatcher; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.parse.ASTNode; impor…...
【论文阅读】MSGNet:学习多变量时间序列预测中的多尺度间序列相关性
MSGNet:学习多变量时间序列预测中的多尺度间序列相关性 文献介绍摘要总体介绍背景及当前面临的问题现有解决方案及其局限性本文的解决方案及其贡献 背景知识的相关工作背景知识问题表述: Method论文主要工作1.输入嵌入和剩余连接 (Input Embedding and R…...
智慧城市与数字孪生:共创未来城市的智慧生活
目录 一、智慧城市与数字孪生的概念与特点 二、智慧城市与数字孪生共创智慧生活的路径 1、城市规划与建设的智能化 2、城市管理与服务的智慧化 3、城市安全与应急管理的智能化 三、智慧城市与数字孪生面临的挑战与对策 四、智慧城市与数字孪生的发展趋势与展望 1、技术…...
【Ubuntu】FTP站点搭建
配置顺序 前提条件:确保软件仓库可以正常使用,确保已正常配置IP地址 1.安装FTP服务 2.编辑FTP配置文件 3.设置开机自启 4.创建用户 5.配置用户限制名单 6.重启服务 7.查看运行状态 8.测试在同一局域网下的Windows查看文件 1.安装FTP服务 sudo apt insta…...
RK3228H is the same SoC as rk3328.
RK3228H is the same SoC as rk3328....
Golang 开发实战day04 - Standard Library
Golang 开发实战day04 - Standard Library 接下来开始我们第四天学习,Go语言标准库提供了丰富的功能,可以帮助开发者快速完成各种任务。 golang就像其他语言一样,附带了一些非常轻量级的函数和特性,都是开箱即用的,这里…...
程序员排查BUG指南
程序员排查BUG(错误)是软件开发过程中的重要一环, 以下是一份程序员排查BUG的指南,帮助你更有效地识别、定位和修复问题: 1、重现BUG:确保能够准确地重现BUG,这是解决问题的第一步。尽量记录重现BUG的步骤。…...
【Vue】elementUI-MessageBox组件相关
官方代码: <template><el-button type"text" click"open">点击打开 Message Box</el-button> </template><script>export default {methods: {open() {this.$confirm(此操作将永久删除该文件, 是否继续?, 提示…...
数据库运行状况和性能监控工具
数据库监控是跟踪组织中数据库的可用性、安全性和性能的过程,它涉及通过跟踪各种关键指标来分析数据库的性能,确保数据库的正常运行并具有深入的可见性,并在出现潜在问题时触发即时警报,以采取主动措施来确保数据库的高可用性。 …...
CTF-辨别细菌
题目描述:try your best to find the flag. 进入靶场后发现是一个游戏,需要全部答对才可以得到最后的flag 查看了一下源码,发现有一个答案模板的模块 尝试解释一下代码 <!-- 答案模版 --> <script id"template_game_pi…...
RuoYi-Vue开源项目2-前端登录验证码生成过程分析
前端登录验证码实现过程 生成过程分析 生成过程分析 验证码的生成过程简单概括为:前端登录页面加载时,向后端发送一个请求,返回验证码图片给前端页面展示 前端页面加载触发代码: import { getCodeImg } from "/api/login&q…...
error: C preprocessor fails sanity check
问题 ./configure --prefix/opt/mips_lib/libev --hostmipsel-openwrt-linux CCmipsel-openwrt-linux-gcc运行后提示 checking how to run the C preprocessor... mipsel-openwrt-linux-gcc --sysroot/opt/mt7628/toolchain-mipsel_24kc_gcc-8.4.0_musl -I/opt/mt7628/toolch…...
Kubernetes实战(三十一)-安装containerd
1 资源 containerd项目官方地址 GitHub - containerd/containerd: An open and reliable container runtime containerd的发布版本地址: Releases containerd/containerd GitHub 2 安装containerd 2.1 解压安装 2.1.1 下载压缩包 curl -LO https://github…...
使用docker搭建faiss向量数据库
为了不污染服务器环境,保证程序运行时有更好的隔离性,领导要求基于容器运行程序。 一、准备工作 1、创建文件夹faiss 该文件夹有用于存放faiss相关的文件及脚本 mkdir ~/faiss 2、创建data文件夹 cd ~/faiss mkdir data 这个文件夹用于volume…...
安卓面试题多线程 121-125
121. 简述当一个线程进入某个对象的一个 synchronized 的实例方 法后,其它线程是否可进入此对象的其它方法 ?如果其他方法没有 synchronized 的话,其他线程是可以进入的。 所以要开放一个线程安全的对象时,得保证每个方法都是线程安全的122. 简述乐观锁和悲观锁的理解及如何…...
身份证OCR识别接口接入实战:Python/Java/PHP/C#四语言代码示例与踩坑指南
#身份证OCR, #OCR接口, #API接入, #Python示例, #Java示例, #PHP示例, #踩坑指南, #石榴智能, #实名认证, #图片识别 身份证OCR识别接口接入实战:Python/Java/PHP/C#四语言代码示例与踩坑指南 作者:石榴智能技术团队 一、前言 身份证OCR识别已经不是什…...
智能手机相机光谱特性测量与多光谱成像技术
1. 智能手机相机光谱特性测量基础智能手机相机的光谱灵敏度函数(Spectral Sensitivity Function, SSF)和透射率函数是计算摄影领域的核心参数,它们决定了设备对光信号的响应特性。准确获取这些参数对色彩还原、光谱重建和白平衡校准等任务至关重要。1.1 光谱灵敏度函…...
WPF虚拟桌宠组件:可嵌入、高性能、工程化UI生命体
1. 这不是“桌面宠物”,而是一个可嵌入的WPF UI组件化生命体你可能在Windows XP时代见过那只晃着尾巴、偶尔打哈欠的3D小猫,也可能在Win10系统托盘里点开过一个会眨眼的像素狐狸——但那些是独立进程、是系统级小工具、是“看一眼就关掉”的轻量娱乐。而…...
2027考研全套资料免费分享
备战27考研最全备考资料整理完毕,一路走来深知备考搜集资料耗费大量时间,浪费不少精力。特意整理2027考研全科完整版资源,全部打包汇总,零基础考生直接拿来就能使用,省去四处搜集资料的烦恼。资料内含:&…...
MobX社区资源大全:10个必备工具、插件和扩展库推荐 [特殊字符]
MobX社区资源大全:10个必备工具、插件和扩展库推荐 🚀 【免费下载链接】MobX-Docs-CN MobX 中文文档 项目地址: https://gitcode.com/gh_mirrors/mo/MobX-Docs-CN MobX作为一个简单、可扩展的状态管理库,已经成为React开发者不可或缺的…...
Claude SWOT分析(内部风控文档流出版):3类高危使用场景+2个监管红线预警
更多请点击: https://intelliparadigm.com 第一章:Claude SWOT分析(内部风控文档流出版):3类高危使用场景2个监管红线预警 高危使用场景识别 在企业级AI应用中,Claude模型若未经严格风控适配,…...
通过用量看板分析团队大模型API消耗发现优化调用策略的机会
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过用量看板分析团队大模型API消耗发现优化调用策略的机会 作为团队的技术负责人,确保大模型API调用在满足业务需求的…...
TV Bro电视浏览器:为智能电视打造的最佳遥控器上网解决方案
TV Bro电视浏览器:为智能电视打造的最佳遥控器上网解决方案 【免费下载链接】tv-bro Simple web browser for android optimized to use with TV remote 项目地址: https://gitcode.com/gh_mirrors/tv/tv-bro 还在为智能电视上网操作不便而烦恼吗?…...
3分钟掌握JetBrains IDE试用期重置:终极完整指南
3分钟掌握JetBrains IDE试用期重置:终极完整指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE试用期重置工具(ide-eval-resetter)是一个开源项目,专…...
Driver Store Explorer终极指南:轻松管理Windows驱动存储区,释放宝贵磁盘空间
Driver Store Explorer终极指南:轻松管理Windows驱动存储区,释放宝贵磁盘空间 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾为Windows系统越来越慢而烦…...
