Bitset
bitset是Java的collections中不太常用的,它提供了高效的位操作的方法。
创建bitset
public BitSet()
public BitSet(int nbits)
默认情况下初始是64位,如果设定了大小,那么会创建一个容量为最接近设定值的64的整数倍的空间的bitset
操作bitset
既可以对于bitset里的某一位进行操作,也可以针对整个bitset进行操作。
操作单个bit
函数名称 | 作用 |
---|---|
public void set(int position) | 对某一位设置1 |
public void clear(int position) | 对某一位设置0 |
public boolean get(int position) | 获取某一位的当前值 |
如果下标不存在,会抛出异常IndexOutOfBoundsException
操作整个bitset
函数名称 | 作用 |
---|---|
public void and ( BitSet set ) | this[index] &= set[index] |
public void or ( BitSet set ) | this[index] |
public void xor ( BitSet set ) | this[index] ^= set[index] |
public void andBot ( BitSet set ) | this[index] &= ~set[index] |
注意:
如果两个bitset的位数不相同,采取如下方式进行操作:
- and():如果参数的位数大于this的位数,那么参数多余的位数被忽略。如果this的位数大于参数的位数,那么参数的不足位用0补足。
- or\xor():不管什么情况,都是用0补足不够的位数。
- andNot():多余的位数全被忽略。
获取bitset的大小
函数名称 | 作用 |
---|---|
size() | 获取bitset占用的capacity() |
length() | 获得被设置值的bitset的长度 |
类基本的功能:
函数名称 | 作用 |
---|---|
clone() | 获取bitset的一个拷贝 |
equals() | 判断两个bitset是否相等,较短的bitset的长度内相等则认为相等 |
hashCode() | 获得一个bitset的哈希函数的值 |
bitset虽然不怎么常用,但是在记录状态的时候还是有很大优势的~~