1. BitMap
BitMap利用内存中连续的二进制位,用于对大量数据做去重和查询。
例如,给定一块长度为10bit的内存空间,想要依次插入整形数据4,2,1,3,我们按照如下的步骤来做:
package BitMap;
/**
* 位图BitMap实现代码
* @author xjh 2010.01.18
*/
public class bitmap {
public char[] bytes;
public int nbits;
public bitmap(int nbits){
this.nbits=nbits;
this.bytes=new char[nbits/8+1];
//一个byte占8位 换言之1byte=8bit
}
public void set(int k){
if (k>nbits) return;
int byteIndex=k/8;
int bitIndex=k%8;
bytes[byteIndex]|=(1<<bitIndex); //1转成二进制 然后左移bitIndex位
}
public boolean get(int k){
if (k>nbits) return false;
int byteIndex=k/8;
int bitIndex=k%8;
return (bytes[byteIndex]&(1<<bitIndex))