package com.github.looly.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); int c = (int) (i % BitMap.MACHINE64); longs[r] = (int) (longs[r] | (1 << c)); } public boolean contains(long i) { int r = (int) (i / BitMap.MACHINE64); int c = (int) (i % BitMap.MACHINE64); if (((int) ((longs[r] >>> c)) & 1) == 1) { return true; } return false; } public void remove(long i) { int r = (int) (i / BitMap.MACHINE64); int c = (int) (i % BitMap.MACHINE64); longs[r] = (int) (longs[r] & (((1 << (c + 1)) - 1) ^ MAX)); } }