bitMap
bitMapはビットで格納されるため、他のデータ、例えばintと比較して31個の異なるデータを多く格納することができる.bitMapはシーンを適用し、10億級の重複しないint型データセットAを与え、あるデータがAにあるかどうかを問い合わせる.普通の配列で保存するかHashMapを使うと、メモリが絶対に爆発するので、4*10*10^8/1024/1024/1024=3.7 Gを計算してbitMapストレージでメモリ10*10^8/8/1024/1024/1024=0.11 Gを計算して差を見ることができます.よしビットマップがどうやって実現したか見てみろビット演算を使ったに違いない
public class BitMap {
//
private final byte shift=5;
// i&mask i%32
private final int mask=0x1F;
int[] a;
BiteMap(int n){
a=new int[n/32+1];
}
//
public void set(int i){
a[i>>>shift]|=(1<//
public boolean find(int i){
try{
if( (a[i>>>shift]&(1<0){
return true;
}else{
return false;
}
}catch(IndexOutOfBoundsException e){
System.out.println(" ");
}
return false;
}
//
public void remove(int i){
a[i>>>shift]&=(~(1<public static void main(String[] args) {
// 10
BitMap map=new BitMap((int)Math.pow(10, 9));
map.set(1000);
map.set(1024);
map.set(10001);
System.out.println(map.find(1000));
System.out.println(map.find(1001));
System.out.println(map.find(1024));
map.remove(1024);
System.out.println(map.find(1024));
System.out.println(" :"+Math.pow(10, 9)*4.0/1024/1024/1024+"G");
System.out.println(" bitMap :"+Math.pow(10, 9)/1024/1024/8.0/1024+"G");
}
}