什么是BitMap

BitMap算法的核心思想在于用bit数组记录0/1两种状态,然后再将具体数据映射到这个比特数组的具体位置,这个比特位表示数据存在或者数据不存在

位图的实现

目前主要可以使用JDK中的BitSet Google开源的EWAHCompressedBitmap

位图使用案例

  1. 给定10亿正数进行,没排过序的,然后再给一个数,如果快速判断是否在这10亿数据里面
    1. 解法:通过bitMap映射判断是否存在值
  2. 使用位图法进行元素不重复的正整形数组排序
    1. 解法,存入bitMap后,从小打到去除存在1的值
  3. 在2.5亿个整数中找出不重复的正整数,注,内存不足以容纳这2.5亿个整数
    1. 采用2-bitMap(每个数分配2bit,00表示存在,01表示出现1次,10表示多次,11无意义)
    2. 采用两个bitmap,第一个bitmap标记是否第一次存在,第二个bitmap标记是否存在多次,如果只在第一个bitmap则表示存在1次,两个bitmap都存在则表示多次,两个bitmap都没有则表示没有值
  4. 在系统中给多名用户打多个标记,在拉取数据的时候可以通过这个标记直接获取结果,比如给三个人A、B、C分别标记程序员,产品经理和测试,那么在设计时就可以使用标记直接过去对应标记下的所有人