package com.xiaoleilu.hutool.bloomFilter.bitMap;
/**
* 过滤器BitMap在32位机器上.这个类能发生更好的效果.一般情况下建议使用此类
* @author loolly
*
*/
public class IntMap implements BitMap {
private static final int MAX = Integer.MAX_VALUE;
public IntMap() {
ints = new int[93750000];
}
public IntMap(int size) {
ints = new int[size];
}
private int[] ints = null;
public void add(long i) {
int r = (int) (i / BitMap.MACHINE32);
int c = (int) (i % BitMap.MACHINE32);
ints[r] = (int) (ints[r] | (1 << c));
}
public boolean contains(long i) {
int r = (int) (i / BitMap.MACHINE32);
int c = (int) (i % BitMap.MACHINE32);
if (((int) ((ints[r] >>> c)) & 1) == 1) {
return true;
}
return false;
}
public void remove(long i) {
int r = (int) (i / BitMap.MACHINE32);
int c = (int) (i % BitMap.MACHINE32);
ints[r] = (int) (ints[r] & (((1 << (c + 1)) - 1) ^ MAX));
}
}