Java编程中的HashSet和BitSet详解

发布时间 - 2026-01-10 23:27:53    点击率:

Java编程中的HashSet和BitSet详解

我在Apache的开发邮件列表中发现一件很有趣的事,Apache Commons包的ArrayUtils类的removeElements方法,原先使用的HashSet现在换成了BitSet。

HashSet<Integer> toRemove = new HashSet<Integer>(); 
for (Map.Entry<Character, MutableInt> e : occurrences.entrySet()) { 
  Character v = e.getKey(); 
  int found = 0; 
  for (int i = 0, ct = e.getValue().intValue(); i < ct; i++) { 
    found = indexOf(array, v.charValue(), found); 
    if (found < 0) { 
      break; 
    } 
    toRemove.add(found++); 
  } 
} 
 
 
return (char[]) removeAll((Object)array, extractIndices(toRemove)); 

新代码如下:

BitSet toRemove = new BitSet(); 
for (Map.Entry<Character, MutableInt> e : occurrences.entrySet()) { 
  Character v = e.getKey(); 
  int found = 0; 
  for (int i = 0, ct = e.getValue().intValue(); i < ct; i++) { 
    found = indexOf(array, v.charValue(), found); 
    if (found < 0) { 
      break; 
    } 
    toRemove.set(found++); 
  } 
} 
return (char[]) removeAll(array, toRemove); 

为什么会使用BitSet代替HashSet呢?

据Apache Commons作者指出,这样代码执行时可以占用更少的内存,速度也更快。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java编程中的HashSet和BitSet  # Java中的HashSet与BitSet详解  # 浅析Java中Map与HashMap  # Hashtable  # HashSet的区别  # Java中HashMap和Hashtable及HashSet的区别  # HashMap 和 HashSet的区别  # Java中的HashSet详解和使用示例_动力节点Java学院整理  # java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较  # hashset去除重复值原理实例解析  # HashSet和TreeSet使用方法的区别解析  # 详解Java中HashSet和TreeSet的区别  # 一次因HashSet引起的并发问题详解  # 我在  # 希望能  # 更快  # 谢谢大家  # 很有趣  # 更少  # 换成了  # 列表中  # class  # brush  # toRemove  # pre  # java  # lt  # gt  # Integer  # br  # HashSet  # BitSet  # strong 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 🚀拖拽式CMS建站能否实现高效与个性化并存?  如何基于PHP生成高效IDC网络公司建站源码?  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么在Controller之外的地方验证数据  简历在线制作网站免费版,如何创建个人简历?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Laravel怎么使用artisan命令缓存配置和视图  高端智能建站公司优选:品牌定制与SEO优化一站式服务  js实现获取鼠标当前的位置  Laravel如何发送系统通知?(Notification渠道示例)  如何快速查询网站的真实建站时间?  如何实现建站之星域名转发设置?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Linux系统命令中screen命令详解  Bootstrap整体框架之CSS12栅格系统  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  linux写shell需要注意的问题(必看)  Linux安全能力提升路径_长期防护思维说明【指导】  如何正确下载安装西数主机建站助手?  免费视频制作网站,更新又快又好的免费电影网站?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  如何在服务器上三步完成建站并提升流量?  Mybatis 中的insertOrUpdate操作  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  移动端脚本框架Hammer.js  黑客如何通过漏洞一步步攻陷网站服务器?  如何快速搭建支持数据库操作的智能建站平台?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何构建满足综合性能需求的优质建站方案?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Laravel如何生成URL和重定向?(路由助手函数)  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  敲碗10年!Mac系列传将迎来「触控与联网」双革新  如何在云主机快速搭建网站站点?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  网站制作软件有哪些,制图软件有哪些?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  如何快速搭建高效简练网站?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  七夕网站制作视频,七夕大促活动怎么报名?