编程珠玑中第一篇讲的就是使用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();
}
}
分享到:
相关推荐
RoaringBitmap, 在Java中,一个更好的压缩 bitset RoaringBitmap Bitsets,也称为位图,通常用作快速数据结构。 不幸的是,他们可以使用太多的内存。 为了补偿,我们经常使用压缩位图。咆哮位图是压缩位图,它比传统...
Java Windows Bitmap(BMP)编码器与解码器是一个用于处理图像文件的工具,它允许在Java环境中读取和创建Windows BMP格式的图像。BMP是一种无损的图像存储格式,广泛应用于各种操作系统中,尤其是Windows系统。由于...
以上就是一个简单的BMP转JPEG的Java实现。然而,实际操作中可能还需要处理不同色彩模式、分辨率等复杂情况。例如,BMP可以是24位色、8位灰度或索引彩色,而JPEG通常只支持YCbCr色彩空间。因此,转换时可能需要将BMP...
Java实现的8583发包解包是一个在金融领域常见的技术操作,主要用于与银行系统进行数据交互。8583标准是国际银行卡信息交换报文格式,全称为ISO 8583,用于电子支付系统中不同金融机构之间的数据传输。这个标准定义了...
综上所述,文档中提到的Java实现链表的程序和处理BMP图像文件的代码片段,为我们提供了如何在不使用指针的高级语言中操作链表,以及如何在编程中处理图像文件的宝贵经验。通过这些内容的掌握,可以帮助我们更好地...
Java实现8583协议的关键在于理解并解析其消息格式。8583报文由多个字段组成,每个字段都有特定的位宽和含义。其中,字段0是消息类型标识,字段11和12是发送者和接收者的系统标识,字段24是MAC(Message ...
### Spring Boot 如何使用 Redis Bitmap 实现签到功能 #### 一、前言 随着互联网技术的发展,大量的在线服务需要处理海量数据。特别是在社交媒体、在线教育等领域,如何高效地管理和统计用户的行为数据变得尤为重要...
在这个“算法java实现”的主题中,我们将深入探讨如何使用Java语言来实现各种重要的算法。Java是一种面向对象的编程语言,以其跨平台性和强大的库支持而受到广大程序员的喜爱,尤其适合用于算法的实现。 1. **动态...
咆哮位图 位集(也称为位图)通常用作快速数据结构。 不幸的是,它们会占用过多的内存。 为了补偿,我们经常使用压缩的位图。 咆哮的位图是压缩的位图,其性能通常优于传统的压缩位图,例如WAH,EWAH或Concise。 在...
`View`还可以包含其他`View`,形成复杂的布局结构。 要将一个`View`转换为`Bitmap`,我们需要执行以下几个步骤: 1. **创建Bitmap对象**:`Bitmap.createBitmap()`方法用于创建一个新的Bitmap,参数分别是宽度、...
在本资源"Java实现二维码.zip"中,主要探讨了如何使用Java编程语言生成二维码图片。二维码作为一种高效的信息编码方式,广泛应用于数据交换、链接跳转等领域。以下将详细阐述涉及的关键知识点。 首先,我们来看Java...
在Android中,Bitmap的缩放主要通过以下几种方式实现: 1. **使用Bitmap.createScaledBitmap()方法**:这是最直接的缩放方式。该方法接受源Bitmap、目标宽度和目标高度作为参数,根据指定的比例进行缩放。例如: ``...
Java实现的源代码是作者思想的一种具象化,使读者能够更直观地理解和学习书中的编程技巧。 在提供的压缩包中,我们看到包含了一个名为"src"的文件夹,这通常代表源代码目录。尽管具体源代码没有详细列出,但我们...
Bitmap是Android系统中用于表示图像的一种数据结构。在Android开发中,Bitmap对象主要用于存储和处理图像数据。它提供了一系列方法来操作图像,如压缩、旋转、裁剪等。 #### 三、二维码解析原理 二维码的解析过程...
在Android中,Bitmap是用于表示图像的一种内存高效的数据结构。你可以通过以下代码将图片资源转换为Bitmap: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image); ``` ...
以上就是实现“android 获取界面部分view,view截图,生成bitmap图片”的核心步骤和涉及的技术点。在实际开发中,可能还需要考虑性能优化,比如避免在主线程进行耗时操作,或者在内存有限的情况下使用更高效的位图...
Redis中的Bitmap是一个非常高效的数据结构,它用于存储和操作位序列。在社交网络或内容分享平台上,点赞功能是非常常见的,用户可以对喜欢的内容进行点赞,系统需要记录这些点赞行为。在大数据量的情况下,传统的...
在实现字符串去重时,我们可以使用int或char作为Bitmap的底层数据结构。如果使用int作为底层数据结构,则需要int数组的长度为122/32+1⇒41。如果使用char作为底层数据结构,则需要char数组的长度为122/8+1⇒16。 ...
RoaringBitmap是一个在Java中广泛使用的高效位图数据结构,尤其适用于大数据和搜索引擎等领域。它在处理大规模数据集时能够提供显著的性能优势,比传统的布隆过滤器(Bloom Filter)和Java内置的BitSet类更为高效。...
通过研究这个示例代码,我们可以学习到具体的实现细节,包括如何组织项目结构、如何处理图像、如何创建滑动效果以及如何与用户交互等。对于初学者来说,这是一个很好的学习资源,对于有经验的开发者来说,它可以作为...