Java编程中的HashSet和BitSet详解

Java编程中的HashSet和BitSet详解

创新互联建站主要从事网站设计制作、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务房山,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

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

HashSet toRemove = new HashSet(); 
for (Map.Entry 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 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详解
链接分享:http://bzwzjz.com/article/gpjddp.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站制作 营销型网站建设 H5网站制作 网站制作报价 成都网站设计 四川成都网站制作 成都网站设计公司 定制网站建设多少钱 攀枝花网站设计 网站制作公司 成都网站制作 专业网站设计 成都网站制作 网站建设 成都定制网站建设 成都网站建设 温江网站设计 成都网站建设 成都网站设计 成都响应式网站建设 广安网站设计 成都网站设计