Java.util.BitSet类中的方法及实例
Methods discussed in this post:
BitSet class methods.
/ / | | \ \
set() xor() clone() clear() length() cardinality()
- set() :java.util.BitSet.set()方法是将指定索引处的位设置为指定的值。
语法:
public void set(int bitpos)
public void set(int bitpos, boolean val)
参数:
bitpos : 一个比特索引
val : 一个要设置的布尔值
返回:无
抛出: IndexOutOfBoundsException – 如果指定的索引是负的
- clone() : java.util.BitSet.clone()方法克隆一个比特集,产生一个与之相等的新比特集。位集的克隆是另一个位集,它的位集与这个位集的位集完全一样,都是真。
语法:
public Object clone()
返回:此位的克隆设置
- cardinality : java.util.BitSet.cardinality()方法用于查找Bitset中元素的数量。
语法:
public int cardinality()
返回:该BitSet中被设置为 “true “的位数。
// Java program explaining BitSet class methods
// set(), clone(), cardinality()
import java.util.*;
public class NewClasss
{
public static void main(String[] args)
{
BitSet bs1 = new BitSet();
BitSet bs2 = new BitSet(8);
BitSet bs3 = new BitSet();
// assign values to bs1 using set()
bs1.set(0);
bs1.set(1);
bs1.set(2);
bs1.set(4);
// assign values to bs2
bs2.set(4);
bs2.set(6);
bs2.set(5);
// Here we are using .clone() method to make
// bs3 as bs1
bs3 = (BitSet) bs1.clone();
// Printing the 3 Bitsets
System.out.println("bs1 : " + bs1);
System.out.println("bs2 : " + bs2);
System.out.println("bs3 cloned from bs1 : " + bs3);
// Using .cardinality() method to print the no. of
// elements of Bitset
System.out.println("Cardinality of bs1 : " +
bs1.cardinality());
System.out.println("Cardinality of bs2 : " +
bs2.cardinality());
}
}
输出:
bs1 : {0, 1, 2, 4}
bs2 : {4, 5, 6}
bs3 cloned from bs1 : {0, 1, 2, 4}
Cardinality of bs1 : 4
Cardinality of bs2 : 3
- clear() : java.util.BitSet.clear()方法用于清除元素,即把所有的Bitset元素设置为假。
语法:
public void clear(int frompos,int topos)
public void clear(int bitIndex)
public void clear()
参数:
frompos – 第一个被清除的位的索引
topos – 最后一个要清除的位之后的索引
bitIndex – 要清除的位的索引
抛出:
IndexOutOfBoundsException – 如果pos值为负数或者frompos大于topos的话。
- xor() : java.util.BitSet.xor()方法对比特集进行逻辑Xor操作。
这个比特集被修改,使其中的一个比特的值为真,当且仅当。- 该位最初的值为真,而参数中相应的位的值为假。
- 该位最初的值是假的,而参数中的相应位的值是真的。
语法:
public void xor(BitSet set)
参数:
set – 我们需要对其进行操作的BitSet。
- length() : java.util.BitSet.length()方法返回比特集的逻辑大小。
比特集中最高设置位的索引加1。如果比特集不包含任何设定位,则返回0。
语法:
public int length()
返回:
该比特集的逻辑大小
// Java program explaining BitSet class methods
// xor(), length(), clear() methods
import java.util.*;
public class NewClass
{
public static void main(String[] args)
{
BitSet bs1 = new BitSet();
BitSet bs2 = new BitSet();
// assign values to bs1 using set()
bs1.set(7);
bs1.set(1);
bs1.set(2);
bs1.set(4);
bs1.set(3);
bs1.set(6);
// assign values to bs2
bs2.set(4);
bs2.set(6);
bs2.set(3);
bs2.set(9);
bs2.set(2);
// Printing the Bitsets
System.out.println("bs1 : " + bs1);
System.out.println("bs2 : " + bs2);
// use of length() method
System.out.println("use of length() : " + bs1.length());
// use of xor() to perform logical Xor operation
bs1.xor(bs2);
System.out.println("Use of xor() : " + bs1);
bs2.xor(bs1);
System.out.println("Use of xor() : " + bs2);
// clear from index 2 to index 4 in bs1
bs2.clear(1, 2);
System.out.println("bs2 after clear method : " + bs2);
// clear complete Bitset
bs1.clear();
System.out.println("bs1 after clear method : " + bs1);
}
}
输出:
bs1 : {1, 2, 3, 4, 6, 7}
bs2 : {2, 3, 4, 6, 9}
use of length() : 8
Use of xor() : {1, 7, 9}
Use of xor() : {1, 2, 3, 4, 6, 7}
bs2 after clear method : {2, 3, 4, 6, 7}
bs1 after clear method : {}