Java BitSet 简单使用
2018-06-18 02:03:05来源:未知 阅读 ()
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的话 这种持久话就不太适合了,还没有找到好办法,继续探索。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash