什么是BitMap
BitMap算法的核心思想在于用bit数组记录0/1两种状态,然后再将具体数据映射到这个比特数组的具体位置,这个比特位表示数据存在或者数据不存在
位图的实现
目前主要可以使用JDK中的BitSet Google开源的EWAHCompressedBitmap
位图使用案例
- 给定10亿正数进行,没排过序的,然后再给一个数,如果快速判断是否在这10亿数据里面
- 解法:通过bitMap映射判断是否存在值
- 使用位图法进行元素不重复的正整形数组排序
- 解法,存入bitMap后,从小打到去除存在1的值
- 在2.5亿个整数中找出不重复的正整数,注,内存不足以容纳这2.5亿个整数
- 采用2-bitMap(每个数分配2bit,00表示存在,01表示出现1次,10表示多次,11无意义)
- 采用两个bitmap,第一个bitmap标记是否第一次存在,第二个bitmap标记是否存在多次,如果只在第一个bitmap则表示存在1次,两个bitmap都存在则表示多次,两个bitmap都没有则表示没有值
- 在系统中给多名用户打多个标记,在拉取数据的时候可以通过这个标记直接获取结果,比如给三个人A、B、C分别标记程序员,产品经理和测试,那么在设计时就可以使用标记直接过去对应标记下的所有人