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