类似位图的数据结构BitsSet

来源:互联网 发布:lg网络电视如何使用 编辑:程序博客网 时间:2024/04/29 21:10

      此数据结构最主要用途是对整数进行计数,通过将集合中每个元素指定为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次,对这些整数排序

      可以通过构造方法实例化对象,推荐使用静态工厂方法获取对象

 

 

      具体类的代码

 

原创粉丝点击