关于bitmap

偶然间看到快速去重,总结一下关于bitmap得一些了解和疑问!

首先快速去重或者快速查重,如果数据量过于庞大,比如说找出40亿个int中得重复数据。那么如果都加载在内存里以int形式存储,每个int占4个字节,40亿个int就是20多个G,这显然是不现实得,所以bitmap会有效得解决这个问题。

我理解得bitmap,是一个压缩内存得工具,通过用最小得单位来映射int或者long,那么映射之后,就是20G/32,也就是600多兆,是不是就可以接受了!!

接下来就是刚刚参考其他人的文章的一些理解,1个字节是8位,也就是说一个字节就可以表示八个数字一一对应!

1.利用bitmap筛选不重复的数字!!

我们可以给数字设定状态,无非是重复,唯一,还有就是不存在!!假设0表示不存在,1表示唯一,2表示重复,那放入bitmap就可以进行判断,判断该数字对应的bitmap中的位置是否有数据,如果没有,状态为0改为1,如果有状态为1改为2,就可以筛选出最后所有存储之后状态为1的数据,就是所有不重复的数据

2.利用bitmap去重

那就更加简单,只需要判断某个对应位置上是否有数据,状态也只有0或1,如果没有,存储数据,0改为1,如果有,则可以不再进行存储,也可以进行覆盖,最终拿出bitmap中所有状态对应为1的位置,就可以实现去重,是不是很简便呢!!!

最后,还有布隆过滤器,底层就是使用了这个原理,具体的还有待深入研究!!!

小白一名,简单将自己的理解分享一下,希望可以得到大家的指点,也加深自己的印象!!!!

感谢浏览!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值