当前位置: 首页 > java >正文

【Java】BitSet简介

1,简介

工欲善其事必先利其器,好的数据结构搭配算法,才能高效完成一些较难的任务。

此次介绍BitSet数据结构,但在介绍之前,先思考一个问题。

如果在16G的机器上,高效去重40亿个整数(Int)?

40亿整数约160G内存,显示全部写进机器中,内存不够。如果使用BitSet,由于最大的整数不超过2^31-1 bit,约256MB,因此,从磁盘中依次读取整数,通过BitSet标记则可判断整数是否存在。随后,遍历BitSet,标记为1的则是存在的整数,否则不存在,因此这么做,还算得上计数排序的思维。

2,解析

1,容量

BitSet内部使用long[]数组存储bit位,因此,理论上,最多可存储(2^63 -1 ) * 64个bit位

但实际上受内存限制,其set参数为Int,因此最多设置(2^31 - 1)个bit位。

2,set(自动扩容)

简单看下set方法,由于一个long占64bit,因此,当bitIndex超过当前words.length*64时,就得扩容。

http://www.xdnf.cn/news/1932.html

相关文章:

  • 10.ArkUI Grid的介绍和使用
  • HTML 地理定位(Geolocation)教程
  • 从 “制造” 到 “品牌”:官网建设助力中国企业突围东南亚
  • python打印颜色(python颜色、python print颜色、python打印彩色文字、python print彩色、python彩色文字)
  • ECharts 地图开发入门
  • 【华为HCIP | 华为数通工程师】821—多选解析—第十七页
  • 缓存与数据库一致性深度解析与解决方案
  • 铃木一郎女儿是奥运会选手吗·棒球1号位
  • 【Pandas】pandas DataFrame rsub
  • opencv--通道,彩色和灰度
  • Appium自动化开发环境搭建
  • CT三视图显示及插值切片显示-全网独家(复制即用)
  • react和vue的区别之一
  • 常见的6种外挂获取执行时机方法介绍
  • OpenAI 推出「轻量级」Deep Research,免费用户同享
  • Python 基础语法与数据类型(四) - 布尔类型 (bool) 与逻辑运算符 (and, or, not) 和类型转换
  • ctfshow web入门 命令执行(29-77)
  • 智能分析网关摄像机实时接入分析平台,如何开启周界防护智能新时代?
  • 中小企业固定资产管理挑战与数字化破局之道
  • 轻量化AIGC边缘部署实战:在移动端实现实时AI内容生成
  • 身份与访问管理(IAM):零信任架构下的认证授权技术与实战
  • 终端运行java出现???
  • vite+vue2+elementui构建之 vite.config.js
  • 今日行情明日机会——20250425
  • 如何优化字符串替换:四种实现方案对比与性能分析
  • 自学新标日第二十二课(复习)
  • ViewPager FragmentPagerAdapter在系统杀死应用后重建时UI不刷新的问题
  • Hadoop生态圈框架部署 - Windows上部署Hadoop
  • MySQL锁
  • redis客户端库redis++在嵌入式Linux下的交叉编译及使用