
算法-BitMap&BitSet
文章平均质量分 83
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
Java中的移位运算符
当long类型进行左移操作时,long类型在二进制中的体现是64位的,因此求余操作的基数也变成了64,也就是说左移64位相当于没有移位,左移72位相当于左移8位(72%64=8),写一段代码来测试一下。无符号右移运算符>>>和右移运算符>>是一样的,只不过右移时左边是补上符号位,而无符号右移运算符是补上0,也就是说,对于正数移位来说等同于:>>,负数通过此移位运算符能移位成正数。左移1位后换算成十进制的值为:1466367340,刚好是733183670的两倍, 有些人在乘2操作时喜欢用左移运算符来替代。转载 2023-05-16 16:48:15 · 814 阅读 · 0 评论 -
漫画:什么是Bitmap算法?
同样是刚才的例子,我们给定90后用户的Bitmap,再给定一个全量用户的Bitmap。最终要求出的是存在于全量用户,但又不存在于90后用户的部分。2. 把整型数4存入bitmap,对应存储的位置就是下标为4的位置,将此bit置为1。3. 把整型数2存入bitmap,对应存储的位置就是下标为2的位置,将此bit置为1。4. 把整型数1存入bitmap,对应存储的位置就是下标为1的位置,将此bit置为1。5. 把整型数3存入bitmap,对应存储的位置就是下标为3的位置,将此bit置为1。转载 2023-05-10 14:34:56 · 312 阅读 · 0 评论 -
2-bitmap
思想很简单:原来8bit 代表8个数字,现在代表4个。按4获取index,按4取模获取 offset在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。思路: bitmap用一个bit来代表存在还是不存在,现在我们要判断重不重复,则需要三个状态:不存在,存在一个,存在多个。2bits可以表示四个状态,令00表示不存在,01表示存在1个,10表示存在...转载 2019-06-20 23:04:35 · 1023 阅读 · 0 评论 -
java中BitSet详解
https://blog.csdn.net/weixin_39935887/article/details/84929579该类在java的java.util包中。BitSet类的原理主要是利用long型有64个bit,每个bit存储一个数值,这样一个long型数字就能存储64个数字,进而节省了空间。接下来我们开始讲解该类的代码。我们先看一下该类的成员变量:/* *...转载 2019-06-20 22:47:59 · 1430 阅读 · 0 评论 -
BitSet的使用场景及简单示例
BitSet简介类实现了一个按需增长的位向量。位 set 的每个组件都有一个boolean值。用非负的整数将BitSet的位编入索引。可以对每个编入索引的位进行测试、设置或者清除。通过逻辑与、逻辑或和逻辑异或操作,可以使用一个BitSet修改另一个BitSet的内容。默认情况下,set 中所有位的初始值都是false。每个位 set 都有一个当前大小,也就是该位...转载 2017-04-17 10:52:10 · 4036 阅读 · 0 评论 -
位图索引:原理(BitMap index)
http://www.cnblogs.com/LBSer/p/3322630.html位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣。说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引。1. 案例 有张表名为table的表,由三列组成,分别是姓名、性别和婚姻状况,其中性别只有男和女两项,婚姻状况由已婚、未婚...转载 2019-02-26 18:46:48 · 1606 阅读 · 1 评论 -
BitMap
https://blog.csdn.net/kl1106/article/details/79478787一、问题引入 BitMap从字面的意思,很多人认为是位图,其实准确的来说,翻译成基于位的映射,怎么理解呢?举一个例子,有一个无序有界int数组{1,2,5,7},初步估计占用内存44=16字节,这倒是没什么奇怪的,但是假如有10亿个这样的数呢,10亿4/(1024102410...转载 2019-03-23 17:51:59 · 766 阅读 · 0 评论 -
数学之美:布隆过滤器 && BitMap
https://blog.csdn.net/qq_16234613/article/details/82798892在判断垃圾邮件时,我们需要判断当前邮件是否在垃圾邮件集合中。而判断一个元素是否存在集合中,最好还是使用哈希表。但如果这个集合非常庞大,如需要存储一亿个邮件地址。使用哈希表将每个邮件地址哈希成8个字节,加上哈希表的存储效率只有50%,那么总共就需要1*8*2=16亿字节,也就是1....转载 2019-06-20 21:34:22 · 672 阅读 · 0 评论 -
BitSet的应用
https://blog.csdn.net/kongmin_123/article/details/822572091.BitSet介绍BitSet是用于存储二进制位和对二进制进行操作的Java数据结构,BitSet从jdk1.0开始就有了。它存储的是二进制位在BitSet中状态,根据对这些状态的判断,可以有很多应用。以前对数据的操作都是先把数据都是存储在内存中间的,现在可以通过设置BitS...转载 2019-06-20 22:02:05 · 1097 阅读 · 0 评论