I'm looking for a good Java BitSet
example to work with 0 and 1s. I tried looking at the Javadocs but I don't understand the usage of the class by just reading that. For instance, how would the and
, or
, and xor
methods work on two different BitSet
objects?
For example:
BitSet bits1 = new BitSet(); BitSet bits2 = new BitSet(); bits2.set(1000001); bits1.set(1111111); bits2.and(bits1); System.out.println(bits2);
If I do this it returns bits2
as empty why is that?
BitSet is a class defined in the java. util package. It creates an array of bits represented by boolean values.
The BitSet class creates a special type of array that holds bit values. The BitSet array can increase in size as needed. This makes it similar to a vector of bits.
A BitSet is a very efficient for a set of non-negative integers within a (not too large) range. Much more efficient than arrays and hash maps. An EnumSet is implemented the same way as a BitSet .
The difference between a boolean array and a BitSet is essentially the same as the difference between an array of object references and a List.
For the specific problem you mentioned: when you called bits2.set(1000001)
, you set the one millionth and first bit to true. Then when you intersected with bits1
, which had the one million, 111 thousand, and 111st bit set, they had no bits in common.
I think what you meant to do was
bits2.set(0); // set the 0th bit bits2.set(6); // set the 6th bit
Does this help clear things up?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With