所谓的Bit-map就是用一个bit位来标记某个元素对应的Value。由于采用了bit为单位来存储数据,因此在存储空间方面,可以大大节省。
优势:
省内存,查找效率高
使用1 bit存储原本需要4bytes(32bit)存储的整数,存储效率变为了原来的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 } }