All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.bloomfilter.bitMap.LongMap Maven / Gradle / Ivy

There is a newer version: 5.8.27
Show newest version
package cn.hutool.bloomfilter.bitMap;

import java.io.Serializable;

/**
 * 过滤器BitMap在64位机器上.这个类能发生更好的效果.一般机器不建议使用
 * 
 * @author loolly
 *
 */
public class LongMap implements BitMap, Serializable {
	private static final long serialVersionUID = 1L;

	private long[] longs = null;

	/**
	 * 构造
	 */
	public LongMap() {
		longs = new long[93750000];
	}

	/**
	 * 构造
	 * 
	 * @param size 容量
	 */
	public LongMap(int size) {
		longs = new long[size];
	}

	@Override
	public void add(long i) {
		int r = (int) (i / BitMap.MACHINE64);
		long c = i % BitMap.MACHINE64;
		longs[r] = longs[r] | (1 << c);
	}

	@Override
	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;
	}

	@Override
	public void remove(long i) {
		int r = (int) (i / BitMap.MACHINE64);
		long c = i % BitMap.MACHINE64;
		longs[r] &= ~(1 << c);
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy