Java BitSet 简单使用

Java BitSet 简单使用

BitSet 简单说明

   在内存中是一串连续的内存空间,从0开始的正整数

   按位操作,每一位的值只有两种 0 或者 1,来表示某个值是否出现过。

2:简单使用

   把 1 3 5 三个数放bitSet中

   BitSet bitSet=new BitSet();

    bitSet.set(1);

bitSet.set(3);

bitSet.set(5);

    这时候bitSet的长度是 最大数+1=5+1=6

for(int i=0;i<bitSet1.length();i=i+1) {

System.out.print(bitSet1.get(i)+"-");

得到的结果

false-true-false-true-false-true

0      1      2    3     4      5

从结果可以看到,为true 说明这个位置上的数是存在的,默认每个位上为0,也就是false。

3:简单应用

   某品牌下有100个会员,会员的id,按入会先后 从1-100,

   会员标签:性别-女,偏爱颜色-白色,职业-程序员

   每个标签对应一个bitSet,每个bitSet中存储该标签对应的会员id

   性别-女标签下的会员有:2 66 88 90 32  bitSet1

   偏爱颜色-白色的会员有:66 89 55 22    bitSet2

   职业-程序员的会员有:88 99 90 22      bitSet3

   程序设计:

(1) 从数据中查出性别为女的会员对应的id

(2) 把id放入 bitSet.set(id);

   其他标签依次放入 不同的bitSet

   操作

(1) 查询喜欢白色的女会员  两个bitSet1.and(bitSet2),再输出bitSet1,则得到66

(2) 查询女会员和职业为程序员的会员 bitSet1.or(bitSet3),再输出bitSet1,则得到2,22,32,66,88,90,99,合并两个集合,并自动去重。

4:BitSet值持久化

   把bitSet中二进制数,转化为十进制保存到数据库中,这样方便在其他的统计中使用。

   二进制过长的话,要使用BigInteger来转换。

   说明:若有10W个会员,二进制转换为十进制大概需要18秒;100W 要30分钟

         会员超过10W的话 这种持久话就不太适合了,还没有找到好办法,继续探索。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值