java的BitSet类学习。
BitSet bs = new BitSet();
System.out.println("bs.size==" + bs.size());
Integer val = 1;
//int的size是4个字节
System.out.println(val.SIZE);
bs.set(0, true);
bs.set(1,false);
bs.set(2,true);
bs.set(3,true);
bs.set(4, false);
System.out.println(bs.size());
//存放第65个数,由于超过了64,所以自动增加了一倍,变成了最大为128
bs.set(64, true);
System.out.println(bs.size());
//存放第129个数,由于超过了128,所以自动增加了一倍,变成了最大为256
bs.set(128, true);
System.out.println(bs.size());
//这里打印出了正确的true和false值
System.out.println(bs.get(0));
System.out.println(bs.get(1));
System.out.println(bs.get(2));
System.out.println(bs.get(3));
bs = new BitSet();
//这里所占用的空间就有32*6=192
int[] prodIds = {3, 24, 45, 42, 1, 7};
System.out.println(prodIds.length);
int len = prodIds.length;
for(int i = 0; i < len; i++){
bs.set(prodIds[i], true);
}
//而这里用了64位就表达了上面的数组,在某些算法里面会得到很大的优化,对于数据存放
System.out.println(bs.size());
int size = bs.size();
for(int i = 0; i < size; i++){
if(bs.get(i)){
System.out.println(i);
}
}
打印输出结果:
bs.size==64
32
64
128
256
true
false
true
true
6
64
1
3
7
24
42
45
总结
BitSet适合用于一些需要用空间换取时间的数据结构,算法。
缺点是不能代表相同的数,比如数组含有两个42时,只能保存一个。
相关推荐
8.4.2 BitSet 8.4.3 Stack 8.4.4 Hashtable 8.4.5 再论枚举器 8.5 排序 8.6 通用集合库 8.7 新集合 8.7.1 使用Collections 8.7.2 使用Lists 8.7.3 使用Sets 8.7.4 使用Maps 8.7.5 决定实施方案 8.7.6 未支持的操作 ...
总结来说,Java语言为数字图像处理提供了一个强大而灵活的平台,无论你是初学者还是经验丰富的开发者,都能找到适合自己的工具和方法。通过深入理解和实践这些知识点,你将能够运用Java实现各种复杂的图像处理任务。
- `java.util.Calendar` 是一个抽象类,提供了一种更灵活的方式来操作日期和时间。常用子类 `GregorianCalendar`。 - **随机数类 Random** - `java.util.Random` 用于生成伪随机数,可用于生成随机数或随机选择。...
本教程重点讲解了Java.util包中的主要组件和使用方法,旨在帮助初学者深入理解并熟练运用这个包。 1. **集合框架**: Java.util包是Java集合框架的基础,包括List、Set、Queue等接口以及ArrayList、LinkedList、...
而在Java实现中,可以利用内置的数据结构和类库,如HashMap用于构建编码表,BitSet用于处理位操作。 下面是一个简化的LZW算法步骤: 1. 初始化编码表,通常从256个基本字符开始。 2. 遍历输入数据,构建当前模式。 ...
- **BitSet**:解释了BitSet类的工作原理。 - **Stack**:概述了Stack类的用途。 - **Hashtable**:讨论了Hashtable类的特性和限制。 - **其他集合类**:提到了ArrayList、LinkedList等其他常用的集合类。 #### ...
- **位操作**:Java的`BitSet`类或者直接操作`byte`数组的位来进行位移、异或等操作。 - **Feistel结构**:理解并正确实现Feistel结构是实现加密和解密过程的关键,包括密钥扩展和半数据的异或操作。 **3. 源代码...
3. **Java.util**包:提供各种实用工具类,如集合框架(List、Set、Map)、日期时间类(Date、Calendar)、随机数生成器、位集(BitSet)、事件模型等。 4. **Java.io**包:包含输入/输出相关的类,如File、...
在Java编程语言中,将十进制数字转换为二进制是常见的操作,尤其是在处理位运算、数据存储或网络通信时。本实训旨在通过编写Java代码来...对于初学者,这是一个很好的实践项目,有助于加深对Java编程和数字转换的理解。
20.6 bitset类 20.7 函数对象 小结 术语 自测练习 自测练习答案 练习 Internet和World Wide Web中的STL资源 STL文献 第21章 ANSI/ISO C++标准语言补充 21.1 简介 21.2 bool数据类型 21.3 static—cast运算符 ...
2. **Integer.toBinaryString()**:Java内置的Integer类提供了一个静态方法toBinaryString(),可以直接将整数转换为二进制字符串。 ```java public static String decToBinary(int num) { return Integer....
Java编程语言中的对象容纳是指如何在程序中存储和管理对象的方式。对象的容纳不仅涉及到对象的创建,还包括对象的组织和访问。...对于初学者,深入学习这些概念并通过实例练习,将有助于提升Java编程技能。
20.6 bitset类 20.7 函数对象 小结 术语 自测练习 自测练习答案 练习 Internet和World Wide Web中的STL资源 STL文献 第21章 ANSI/ISO C++标准语言补充 21.1 简介 21.2 bool数据类型 21.3 static—cast运算符 ...
在编程中,生成随机数通常使用`java.util.Random`类,该类提供了`nextInt()`方法生成指定范围内的随机整数。为了确保数字不重复,开发者可能采用了数组或集合来存储已生成的数字,每次生成新数字时检查这个集合,...
每种方块可能用一个类来表示,包含形状、颜色和旋转状态等属性。JavaFX提供更现代的UI组件和效果,但在这种简单的游戏中,Swing已经足够。 对于游戏逻辑,开发者可能采用事件驱动编程,监听键盘输入并实时响应。...
同时,`BitSet`类用于在内存中高效地存储和操作文档集。 6. **倒排索引的优化**:在`MergePolicy`和`MergeScheduler`中,你可以看到Lucene如何决定何时和如何合并索引段,以保持索引的效率和空间利用率。 7. **近...
5. **内存缓存与倒排索引优化**:Lucene提供缓存机制,如BitSet缓存,可以提高查询性能。同时,通过设置不同类型的Filter和FilterCache,可以进一步优化倒排索引的访问。 6. **实时搜索与更新**:Lucene支持实时...
3. **库函数法**:某些编程语言如C++的`std::bitset`或者Java的`Integer.bitCount()`提供了内置函数,可以直接计算一个整数的二进制表示中1的个数,非常方便,但需要了解和记住这些库函数。 4. **人口普查位法...
如Python、Java或C++,都有内置的函数或方法可以方便地进行进制转换,例如Python的`int()`和`bin()`函数,Java的`Integer.parseInt()`和`Integer.toString()`方法,以及C++的`std::stringstream`或`std::bitset`。...