编程珠玑中第一篇讲的就是使用bitmap来排序大文件里面的数据。下面给出一个简单的BitMap实现。
主要使用Byte数组。主要就是shiyong为操作来设置为1 的元素。
public class BitMap {
private byte[] bitMap = null;
public BitMap(int size){
//初始化时需要计算一共要使用多少个Byte。
if(size%8==0){
bitMap = new byte[size/8];
}else{
bitMap = new byte[size/8+1];
}
}
public static void main(String[] args)
{
BitMap map = new BitMap(10);
map.setTag(1);
map.setTag(5);
map.setTag(4);
map.setTag(2);
map.setTag(11);
map.printBitMap();
}
//把一个数位设置为1
public void setTag(int number){
int index =0;
int bit_index = 0;
if(number%8 ==0){
index = number/8-1;
bit_index = 8;
}else{
index = number/8;
bit_index = number%8;
}
switch(bit_index){
case 1:
bitMap[index] =(byte) (bitMap[index]|0x01);
break;
case 2:
bitMap[index] =(byte) (bitMap[index]|0x02);
break;
case 3:
bitMap[index] =(byte) (bitMap[index]|0x04);
break;
case 4:
bitMap[index] =(byte) (bitMap[index]|0x08);
break;
case 5:
bitMap[index] =(byte) (bitMap[index]|0x10);
break;
case 6:
bitMap[index] =(byte) (bitMap[index]|0x20);
break;
case 7:
bitMap[index] =(byte) (bitMap[index]|0x40);
break;
case 8:
bitMap[index] =(byte) (bitMap[index]|0x8);
break;
}
}
//打印bit为1 的数值
public void printBitMap(){
int size = bitMap.length;
for(int i = 0;i < size ;i++){
byte temp = bitMap[i];
if((bitMap[i]&0x01)==1){
System.out.print(i*8+1+" ");
}
if((bitMap[i]>>1&0x01)==1){
System.out.print(i*8+2+" ");
}
if((bitMap[i]>>2&0x01)==1){
System.out.print(i*8+3+" ");
}
if((bitMap[i]>>3&0x01)==1){
System.out.print(i*8+4+" ");
}
if((bitMap[i]>>4&0x01)==1){
System.out.print(i*8+5+" ");
}
if((bitMap[i]>>5&0x01)==1){
System.out.print(i*8+6+" ");
}
if((bitMap[i]>>6&0x01)==1){
System.out.print(i*8+7+" ");
}
if((bitMap[i]>>7&0x01)==1){
System.out.print(i*8+8+" ");
}
}
System.out.println();
}
}
分享到:
相关推荐
购票时系统在阈值次数内采用随机分配的方式产生车票,并对该车票进行检查,即查询 该车票是否可购买,如果可购买,则对该座位进行加锁(lock),之后再重复一次检查,若依 旧可购买,则对该 Seat 上的 bitmap 进行...
使用纯Java语言写出来的数据结构,包含数据结构有 单向链表,双向链表,单向循环链表,双向循环链表,二叉树,队列,栈等, 关于实现的种类有分多种类型,包含有链表或者数组,二叉树里面包含有常见的二叉查找树,...
BitMap可以看成一种数据结构。 假设有这样一个需求:在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存。 在Java中,int占4字节,1字节=8位(1 byte = 8 bit)。 如果每个数字用int存储,那...
Java中的Deque接口 顺序表 链表 单链表 链表是离散存储线性结构 优点 空间没有限制 插入删除元素很快 缺点 存取速度很慢 链表分类 单向链表 一个节点指向下一个节点...
此实现基于和上的Java和C实现。 此实现的其他功能: 倒排列表表示:大部分已满的块都紧凑地存储为非成员数组(而不是成员数组或固定大小的位图)。 不变的咆哮位图的集合可以通过mmap有效地序列化到单个文件中。...
4.19 bitmap和matrix图片旋转 4.20 加载手机存储卡中的文件 4.21 小结 第5章 交互式服务 5.1 textview的花样 5.2 拨打电话程序 5.3 短信发送程序 5.4 e-mail发送程序 5.5 实现手机震动效果 5.6 图文提醒效果 5.7 ...
当存储的值是相当小的整数时,BitSet(也称为Bitmap或位向量)是实现一组的理想数据结构。 它可能比通用集实现快几个数量级。 特别是,BitSet具有对设置操作(联合,差,交)的快速支持。 FastBitSet.js实现为速度...
Go 开源项目 MIMIO 的对象存储方案在探探的实践分布式分布式事务etcd 的实现原理数据结构与算法基础Dijkstra什么是 Bitmap 算法?Bitmap算法(进阶篇)最小栈的实现判断 2 的乘方找出缺失的整数辗转相除法是什么鬼?...
虽然说 Infobright 没有提供索引结构,但它 Knowledge Grid 中的 Numerical Histogram、Character Map 和 Pack-to-Pack 结构,怎么看都和 bitmap 索引脱不了关系。只是它的组织形式不像传统数据库中的索引罢了。 ...
那么对于用户自己定义的数据结构是无法直接用Intent来传送的,如果想要通过Intent来传递自定义数据,可以让数据结构实现Parcelable接口,这样就可以把数据放入Intent。但是Intent的传送效率也不是很高,特别是当传递...
和Abe,K.,按边界跟随数字化二进制图像的拓扑结构分析[ ] David Douglas和Thomas Peucker,减少代表数字化线或其漫画所需的点数的算法[ ] 该库最初旨在与Processing一起使用,但也应适用于Java,因为它不依赖于...
1.3.3 在Linux平台上下载并安装Java开发工具包(JDK) 21 1.3.4 在Linux平台上下载并安装Apache ANT 22 1.3.5 在Linux平台上下载并安装GNU Make 22 1.3.6 在Linux平台上下载并安装Android SDK 23 1.3.7 在Linux...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...
2.2.1 程序结构 2.2.2 代码分析 2.3 权限permission 2.4 LogCat日志调试 2.5 示例练习 2.5.1 登录界面 2.5.2 事件处理 2.6 本章小结 第二篇 Android开发关键组件 第3章 Activity(活动) 3.1 什么是任务 3.2 ...
• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和静态图像格式 (如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) • GSM GSM GSM GSM 电话技术 (依赖于硬件) • ...
安卓该目录包含Java(Android Studio Project)中客户端POC的实现。 组件 客户端 Android应用程序从服务器请求图像,并在图像视图中显示结果。 使用BitmapFactory.Options.inBitmap实现可重用的Bitmap对象,以解决GC...
4-5 bitmap.mp4 4-4 发布订阅.mp4 4-3 pipeline.mp4 4-2 慢查询.mp4 4-1 课程目录.mp4 3-4 Go客户端:redigo简介.mp4 3-3 Python客户端:redis-py.mp4 3-2 Java客户端:Jedis.mp4 3-1 课程目录.mp4 2-9 ...
1.5 Android应用结构分析 24 1.5.1 创建一个Android应用 24 1.5.2 自动生成的R.java 26 1.5.3 res目录说明 27 1.5.4 Android应用的清单文件: AndroidManifest.xml 28 1.5.5 应用程序权限说明 29 1.6 Android应用的...
1.5 Android应用结构分析 24 1.5.1 创建一个Android应用 24 1.5.2 自动生成的R.java 26 1.5.3 res目录说明 27 1.5.4 Android应用的清单文件: AndroidManifest.xml 28 1.5.5 应用程序权限说明 29 1.6 Android应用的...
ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。而ZXing.Net是ZXing的端口之一。 在工程中引用ZXing.Net 在项目中,点击项目名称右键–>管理NuGet程序包,打开...