之前写过一篇《BitSet 源码解析》,
由于篇幅所限,没有给出使用的例子,
简单找个例子说明下。
一、ArrayList 中 BItSet的使用
ArrayList
的 removeIf
方法的实现中,
很巧妙的用了 BitSet
public boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
int removeCount = 0;
final BitSet removeSet = new BitSet(size);
final int expectedModCount = modCount;
final int size = this.size;
for (int i=0; modCount == expectedModCount && i < size; i++) {
@SuppressWarnings("unchecked")
final E element = (E) elementData[i];
if (filter.test(element)) {
removeSet.set(i);
removeCount++;
}
}
if (modCount != expec