BitMap

所谓的Bit-map就是用一个bit位来标记某个元素对应的Value。由于采用了bit为单位来存储数据,因此在存储空间方面,可以大大节省。
优势:
省内存,查找效率高
使用1 bit存储原本需要4bytes32bit)存储的整数,存储效率变为了原来的32
示例: 10亿个整数,普通存储需要 4bytes*10亿~3.73G,使用BitMap存储只需要 (10亿bit/8)bytes~119.2M  
应用场景:
1、给定1~10亿之间的海量整数,进行去重 
2、给定1-10亿连续的共10亿个整数,另外再随机放入一个1~10亿之间的数,找出这个重复数 
3、布隆过滤器(Bloom Filter): 可处理非数字类型,简单理解:布隆过滤器=多个hash函数+BitMap
java BitSet示例:
import java.util.BitSet;
public class BitMapTest {
    public static void main(String[] args) {
        int[] arr = new int[] {1, 7, 24, 57};
        BitSet bitSet = new BitSet();
        for (int data : arr) {
            bitSet.set(data, true);
        }

        System.out.println(bitSet.get(24)); //true
        System.out.println(bitSet.get(25));//false
    }
}


            
标签: bitset、bit、bitmap、4bytes、布隆、面试
  • 回复
隐藏