欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java编程中的HashSet和BitSet详解

程序员文章站 2024-03-05 19:58:43
java编程中的hashset和bitset详解 我在apache的开发邮件列表中发现一件很有趣的事,apache commons包的arrayutils类的remove...

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作者指出,这样代码执行时可以占用更少的内存,速度也更快。

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