此数据结构最主要用途是对整数进行计数,通过将集合中每个元素指定为1,2或4个bit,以降低空间复杂率。实际使用的是int数组,通过位操作实现将1个int划分为多个包含1,2或4个bit的元素。当元素包含1个bit时退化为位图。
类似于Map,对整数进行计数。将1个int划分成32/(2^n)个包含 2^n 个bit的元素,从而实现对BitsMap的下标进行[0,2^(n+1) )的计数。
例如,n=0,则1个int包含32个元素,每个元素包含1个bit。BitsMap中对应每个元素的值为[0,2)。这就是位相量,即位图。
n=1,则1个int包含16个元素,每个元素包含2个bit。BitsMap中对应元素的值为[0,4)。
n=2,则1个int包含8个元素,每个元素包含4个bit。BitsMap中对应元素的值为[0,16)。
具体使用环境:作为集合对整数计数。例如,
1)文件中存有N个整数,N<10^5,每个整数至多出现1次,找到没有出现的整数
2)文件中存有N个整数,N<10^5,每个整数至多出现10次,找到出现的次数最多整数,或者按照出现次数排序
3)文件中存有N个整数,N<10^20,每个整数至多出现1次,对这些整数排序
可以通过构造方法实例化对象,推荐使用静态工厂方法获取对象
具体类的代码