深入Java----集合----BitSet

BitSet类
    大小可动态改变, 取值为true或false的位集合。用于表示一组布尔标志。

java中有三种移位运算符

<<      :     左移运算符,num << 1,相当于num乘以2

>>      :     右移运算符,num >> 1,相当于num除以2

>>>    :     无符号右移,忽略符号位,空位都以0补齐

为什么java中1L<<32等于4294967296,而1<<32等于1
你需要了解整数的二进制存储形式以及移位运算的基本操作
对于int类型的整数移位a<<b,系统先用b对32求余,得到的结果才是真正移位的位数
对于long类型的整数移位,同上,不过是对64求余
对于1L<<32,实际移动位数32%64=32
对于1<<32,实际移动位数32%32=0

1L:0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
1L<<32:0000 0000 0000 0000 0000 0000 0000 0001 0000 0000 0000 0000 0000 0000 0000 0000 = 2^32 = 4294967296

1: 0000 0000 0000 0000 0000 0000 0000 0001
1<<32:0000 0000 0000 0000 0000 0000 0000 0001 = 1
words[wordIndex] |= (1L << bitIndex);
相当于对bitIndex对64进行取余运算(左移会轮循),然后让1移动到数组的该余数位置,再将此值设置为true
时间: 2024-10-16 16:09:00

深入Java----集合----BitSet的相关文章

Java集合总览

这篇文章总结了所有的Java集合(Collection).主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式. Arrays Array是Java特有的数组.在你知道所要处理数据元素个数的情况下非常好用.java.util.Arrays 包含了许多处理数据的实用方法: Arrays.asList:可以从 Array 转换成 List.可以作为其他集合类型构造器的参数. Arrays.binarySearch:在一个已排序的或者其中一段中快速查找. Arrays.copyOf:如果你

Java 集合框架

Java 集合框架 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack, 和Properties这些类用来存储和操作对象组. 虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题.由于这个原因,使用Vector类的方式和使用Properties类的方式有着很大不同. 集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 该框架允许不同类型的集合,以类似的方式工作,具有高度

利用JAVA的BitSet实现数组排序

各种经典排序算法网上还是比较多的,但是此处实现一个时间复杂度为O(n)(不完全准确,有一定条件)的排序算法.借助JAVA的BitSet来实现,仅提供一个思路. 废话不多说,直接上代码: public static void sort(){  int[] arr = new int[]{32,21,7,29,18,50};  int max = max(arr);  System.out.println(max);  BitSet bitSet = new BitSet(max);  //初始化b

Java集合类型详解

这篇文章总结了所有的Java集合(Collection).主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式. Arrays Array是Java特有的数组.在你知道所要处理数据元素个数的情况下非常好用.java.util.Arrays 包含了许多处理数据的实用方法: Arrays.asList:可以从 Array 转换成 List.可以作为其他集合类型构造器的参数. Arrays.binarySearch:在一个已排序的或者其中一段中快速查找. Arrays.copyOf:如果你

JAVA 集合JGL

集合 Java提供了四种类型的"集合类":Vector(矢量).BitSet(位集).Stack(堆栈)以及Hashtable(散列表).与拥有集合功能的其他语言相比,尽管这儿的数量显得相当少,但仍然能用它们解决数量惊人的实际问题. Stack实现了一个LIFO(先入先出)序列,而Hashtable是一种"关联数组",允许我们将任何对象关联起来.除此以外,所有Java集合类都能自动改变自身的大小.所以,我们在编程时可使用数量众多的对象,同时不必担心会将集合弄得有多大

java.util.BitSet 详细分析 学习笔记

1,BitSet类    大小可动态改变, 取值为true或false的位集合.用于表示一组布尔标志. 此类实现了一个按需增长的位向量.位 set 的每个组件都有一个 boolean 值.用非负的整数将 BitSet 的位编入索引.可以对每个编入索引的位进行测试.设置或者清除.通过逻辑与.逻辑或和逻辑异或操作,可以使用一个 BitSet 修改另一个 BitSet 的内容. 默认情况下,set 中所有位的初始值都是 false. 每个位 set 都有一个当前大小,也就是该位 set 当前所用空间的

一起学 Java集合框架、数据结构、泛型

一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个层次. 实现(类):是集合接口的具体实现.从本质上讲,它们是可重复使用的数据结构. 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序.这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现. 集合接口 序号 name 接口描述 1 Collection Col

java基础知识--java集合框架

java集合框架 1.概述: 集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一个集合的扩展和适应必须是简单的. 整个集合框架就围绕一组标准接口而设计.你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet等,除此之外你也可以通过这些接口实现自己的集合. 集合框架是一个用来代表和操纵集合的统一架构.所有的集合

java集合入门和深入学习,看这篇就差不多了

一.集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map:两者的区别: 1.Collection是单列集合:Map是双列集合 2.Collection中只有Set系列要求元素唯一:Map中键需要唯一,值可以重复 3.Collection的数据结构是针对元素的:Map的数据结构是针对键的. 泛型: 在说两大集合体系之前先说说泛型,因为在后面的集合中都会用到:所谓的泛型就是:类型的参数化 泛型是类型的一部分,类名+泛型是一个整体 如果有泛型,不使用时,参数的类型会自动

20180826(02)-Java集合框架

Java 集合框架 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack, 和Properties这些类用来存储和操作对象组. 虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题.由于这个原因,使用Vector类的方式和使用Properties类的方式有着很大不同. 集合框架被设计成要满足以下几个目标. 1.该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 2.该框架允许不同类型的集合,以类似的方式工作,