BitMap的java实现
来源:互联网 发布:js同源策略是什么意思 编辑:程序博客网 时间:2024/06/06 17:37
/** * 本文所实现的bitmap是将整型数字存储到整型数组中,主要是为了减少原始数字集合存储所占的空间 * @author djskl * */public class BitMap {private int[] data;//BitMapprivate final int BITS=32;//数组中的存储单元为32位private final int SHIFT=5;//2^5=32private final int MASK=0x1F;//0001 1111=31public BitMap(int nums){data=new int[1+nums/BITS];}/** * 向BitMap添加一个元素,其中value>>SHIFT和1<<(value&MASK)是实现映射的关键 * @param value */public void add(int value){int index=value>>SHIFT;//删掉低5位,相当于value/32int bit=1<<(value&MASK);//只保留低5位,相当于value%31,把1往右移(<value&MASK)位data[index]=data[index]|bit;}/** * 从bitmap中删除value * @param value */public void clr(int value){int index=value>>SHIFT;int bit=1<<(value&MASK);bit=~bit;data[index]=data[index]&bit;}/** * 从bitmap中寻找value * @param value * @return */public boolean find(int value){int index=value>>SHIFT;int bit=1<<(value&MASK);if((data[index]&bit)!=0)return true;elsereturn false;}public static void main(String[] args){BitMap bm=new BitMap(100);bm.add(23);bm.add(35);bm.add(24);bm.add(43);System.out.println(bm.find(20));}}
jdk也提供了BitSet的api方便大家使用:http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html
BitSet通过将某个index置为true/false来标示某个值是否被存储(通过set实现置位,通过get来判断当前index上是否有元素),还是对bitset进行与或非异或等操作。
- BitMap的java实现
- java bitmap实现
- java实现Bitmap算法
- java实现BitMap
- java bitmap 实现
- Bitmap java实现
- java中BitMap实现
- BitMap的实现
- BitMap的C++实现
- Java实现2-BitMap排序
- 位图bitmap的实现作用
- Bitmap的一个简单实现
- BitMap实现
- 【Java CV与Android】JavaCV实现IplImage与Bitmap的相互转换
- java/bitmap
- 用bitmap实现中位数的算法
- Drawable转BitMap实现Drawable的缩放
- BitMap(位图)结构的C++实现
- 黑马程序员 ---IO输入输出(一)
- 将文档中className有“red”的标签背景色设为红色(百度2014校招前端笔试题)
- 找工作技巧
- 腾讯2013校招技术类笔试题
- 如何驱动一款USB设备
- BitMap的java实现
- spoj AMR11 Robbing Gringotts 双边暴力+hash+费用流
- EPP编写代码浏览器无法打开问题
- 线程同步之临界区(类比互斥对象进行分析)
- UVa 11264 Coin Collector (选硬币&贪心好题)
- HDOJ, 杭电2050折线分割平面
- JavaSwing图形界面编程之自定义类(一)
- 解决ok6410 uboot下ping不通的问题
- c\c++复习基础要点10---智能指针