Package blbutil
Class BitArray
- java.lang.Object
-
- blbutil.BitArray
-
public class BitArray extends java.lang.Object
Interface
BitArray
represents a mutable sequence of bits with a fixed length.Instances of
BitArray
are not thread-safe.
-
-
Constructor Summary
Constructors Constructor Description BitArray(int size)
Constructs aBitArray
instance with the specifiedsize
and having all bits set to 0 (unset).BitArray(long[] values, int size)
Constructs aBitArray
instance from the specified values.BitArray(BitArray bitList)
Constructs a newBitArray
instance with the same sequence of bits and the same size as the specifiedBitArray
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clears all bits.void
clear(int index)
Clears the specified bit.void
copyFrom(BitArray src, int from, int to)
Replaced the specified bits in thisBitlist
with the corresponding bits in the specifiedBitArray
.boolean
equal(BitArray other, int from, int to)
Returnstrue
if thisBitlist
and the specifiedBitArray
have identical sequences of bits for the specified indices, and returnsfalse
otherwise.static boolean
equals(BitArray a, BitArray b)
Returnstrue
if the specifiedBitArray
objects represent identical bit sequences having the same size, and returnsfalse
otherwise.boolean
get(int index)
Returns the specified bit as aboolean
value.int
getAsInt(int index)
Returns the specified bit as aint
value.int
hash(int from, int to)
Returns a hash code for the specified bits in thisBitlist
BitArray
restrict(int from, int to)
Returns a newBitArray
of size(from - to)
that is a copy of the specified bit indices of thisBitArray
.void
set(int index)
Sets the specified bit.int
size()
Returns the number of bits in thisBitArray
.static void
swapBits(BitArray a, BitArray b, int from, int to)
Swaps the specified bits of the two specifiedBitlist
objects.long[]
toLongArray()
Returns thisBitArray
as along
array.java.lang.String
toString()
Returns a string representation of thisBitArray
.
-
-
-
Constructor Detail
-
BitArray
public BitArray(int size)
Constructs aBitArray
instance with the specifiedsize
and having all bits set to 0 (unset).- Parameters:
size
- the number of bits- Throws:
java.lang.IllegalArgumentException
- ifsize < 0
-
BitArray
public BitArray(long[] values, int size)
Constructs aBitArray
instance from the specified values.- Parameters:
values
- a sequence of bitssize
- the number of bits- Throws:
java.lang.IllegalArgumentException
- ifsize < 0
java.lang.IllegalArgumentException
- ifvalues.length != (size + Long.SIZE - 1) / Long.SIZE
java.lang.NullPointerException
- ifvalues == null
-
BitArray
public BitArray(BitArray bitList)
Constructs a newBitArray
instance with the same sequence of bits and the same size as the specifiedBitArray
.- Parameters:
bitList
- a sequence of bits to be copied- Throws:
java.lang.NullPointerException
- ifbitList == null
-
-
Method Detail
-
size
public int size()
Returns the number of bits in thisBitArray
.- Returns:
- the number of bits in this
BitArray
-
get
public boolean get(int index)
Returns the specified bit as aboolean
value. A 1 bit returnstrue
and a 0 bit returnsfalse
.- Parameters:
index
- a bit index- Returns:
- the specified bit as a
boolean
value. - Throws:
java.lang.IndexOutOfBoundsException
- ifindex < 0 || index >= this.size()
-
getAsInt
public int getAsInt(int index)
Returns the specified bit as aint
value.- Parameters:
index
- a bit index- Returns:
- the specified bit as a
int
value. - Throws:
java.lang.IndexOutOfBoundsException
- ifindex < 0 || index >= this.size()
-
set
public void set(int index)
Sets the specified bit.- Parameters:
index
- a bit index- Throws:
java.lang.IndexOutOfBoundsException
- ifindex < 0 || index >= this.size()
-
clear
public void clear(int index)
Clears the specified bit.- Parameters:
index
- a bit index- Throws:
java.lang.IndexOutOfBoundsException
- ifindex < 0 || index >= this.size()
-
clear
public void clear()
Clears all bits.
-
restrict
public BitArray restrict(int from, int to)
Returns a newBitArray
of size(from - to)
that is a copy of the specified bit indices of thisBitArray
.- Parameters:
from
- the first bit to be copied (inclusive)to
- the last bit to be copied (exclusive)- Returns:
- a new
BitArray
of size(from - to)
that is a copy of the specified bit indices of thisBitArray
- Throws:
java.lang.IndexOutOfBoundsException
- iffrom < 0 || from > to || to > this.size
-
copyFrom
public void copyFrom(BitArray src, int from, int to)
Replaced the specified bits in thisBitlist
with the corresponding bits in the specifiedBitArray
.- Parameters:
src
- theBitArray
to be copied fromfrom
- the first bit to be copied (inclusive)to
- the last bit to be copied (exclusive)- Throws:
java.lang.IndexOutOfBoundsException
- iffrom < 0 || from > to || to > this.size || to > src.size()
java.lang.NullPointerException
- ifsrc == null
-
hash
public int hash(int from, int to)
Returns a hash code for the specified bits in thisBitlist
- Parameters:
from
- the first bit (inclusive)to
- the last bit (exclusive)- Returns:
- a hash code for the specified bits in this
Bitlist
- Throws:
java.lang.IndexOutOfBoundsException
- iffrom < 0 || from > to || to > this.size
-
swapBits
public static void swapBits(BitArray a, BitArray b, int from, int to)
Swaps the specified bits of the two specifiedBitlist
objects.- Parameters:
a
- the firstBitArray
b
- the secondBitArray
from
- the first bit to be copied (inclusive)to
- the last bit to be copied (exclusive)- Throws:
java.lang.IllegalArgumentException
- ifs.size() != b.size()
java.lang.IndexOutOfBoundsException
- iffrom < 0 || from > to || to > a.size()
java.lang.NullPointerException
- ifa == null || b == null
-
equal
public boolean equal(BitArray other, int from, int to)
Returnstrue
if thisBitlist
and the specifiedBitArray
have identical sequences of bits for the specified indices, and returnsfalse
otherwise. Returnstrue
if(from == to) && (0 <= from) && (from < other.size())
.- Parameters:
other
- theBitArray
to be compared withthis
for equality.from
- the first bit to be compared (inclusive)to
- the last bit to be compared (exclusive)- Returns:
true
if thisBitlist
and the specifiedBitArray
have identical sequences of bits for the specified indices.- Throws:
java.lang.IndexOutOfBoundsException
- iffrom < 0 || from > to || to > this.size || to > other.size()
java.lang.NullPointerException
- ifother == null
-
toLongArray
public long[] toLongArray()
Returns thisBitArray
as along
array.- Returns:
- this
BitArray
as along
array
-
toString
public java.lang.String toString()
Returns a string representation of thisBitArray
. The exact details of the representation are unspecified and subject to change.- Overrides:
toString
in classjava.lang.Object
- Returns:
- a string representation of this
BitArray
.
-
equals
public static boolean equals(BitArray a, BitArray b)
Returnstrue
if the specifiedBitArray
objects represent identical bit sequences having the same size, and returnsfalse
otherwise.- Parameters:
a
- a sequence of long valuesb
- a sequence of long values- Returns:
true
if the specifiedBitArray
objects represent identical bit sequences having the same size- Throws:
java.lang.NullPointerException
- ifa == null || b == null
-
-