Class ImmutableBitSet
- java.lang.Object
-
- com.googlecode.javaewah.datastructure.ImmutableBitSet
-
public class ImmutableBitSet extends Object implements Cloneable, Iterable<Integer>
This is an immutable version of the BitSet class in this same package. It is meant to be used with memory-file mapping.final FileOutputStream fos = new FileOutputStream(tmpfile); BitSet Bitmap = BitSet.bitmapOf(0, 2, 55, 64, 512); Bitmap.serialize(new DataOutputStream(fos)); RandomAccessFile memoryMappedFile = new RandomAccessFile(tmpfile, "r"); ByteBuffer bb = memoryMappedFile.getChannel().map( FileChannel.MapMode.READ_ONLY, 0, totalcount); ImmutableBitSet mapped = new ImmutableBitSet(bb.asLongBuffer());
-
-
Constructor Summary
Constructors Constructor Description ImmutableBitSet(LongBuffer bs)
Construct a ImmutableBitSet from the content of the LongBuffer which should have been initialized with BitSet.serialize (from the BitSet in this same package).
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description BitSet
asBitSet()
Get a copy of this ImmutableBitSet as a mutable BitSet.int
cardinality()
Compute the number of bits set to 1ImmutableBitSet
clone()
boolean
empty()
Check whether a bitset contains a set bit.boolean
equals(Object o)
boolean
get(int i)
get value of bit iint
getNumberOfWords()
long
getWord(int index)
int
hashCode()
boolean
intersects(BitSet bs)
Checks whether two bitsets intersect.IntIterator
intIterator()
Iterate over the set bitsIterator<Integer>
iterator()
int
nextSetBit(int i)
Usage: for(int i=bs.nextSetBit(0); i>=0; i=bs.nextSetBit(i+1)) { operate on index i here }int
nextUnsetBit(int i)
Usage: for(int i=bs.nextUnsetBit(0); i>=0; i=bs.nextUnsetBit(i+1)) { operate on index i here }int
size()
Query the sizeString
toString()
IntIterator
unsetIntIterator()
Iterate over the unset bits-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
ImmutableBitSet
public ImmutableBitSet(LongBuffer bs)
Construct a ImmutableBitSet from the content of the LongBuffer which should have been initialized with BitSet.serialize (from the BitSet in this same package). The input is not modified.- Parameters:
bs
- the data source
-
-
Method Detail
-
asBitSet
public BitSet asBitSet()
Get a copy of this ImmutableBitSet as a mutable BitSet.- Returns:
- a copy
-
cardinality
public int cardinality()
Compute the number of bits set to 1- Returns:
- the number of bits
-
clone
public ImmutableBitSet clone()
-
empty
public boolean empty()
Check whether a bitset contains a set bit.- Returns:
- true if no set bit is found
-
get
public boolean get(int i)
get value of bit i- Parameters:
i
- index- Returns:
- value of the bit
-
intIterator
public IntIterator intIterator()
Iterate over the set bits- Returns:
- an iterator
-
intersects
public boolean intersects(BitSet bs)
Checks whether two bitsets intersect.- Parameters:
bs
- other bitset- Returns:
- true if they have a non-empty intersection (result of AND)
-
nextSetBit
public int nextSetBit(int i)
Usage: for(int i=bs.nextSetBit(0); i>=0; i=bs.nextSetBit(i+1)) { operate on index i here }- Parameters:
i
- current set bit- Returns:
- next set bit or -1
-
nextUnsetBit
public int nextUnsetBit(int i)
Usage: for(int i=bs.nextUnsetBit(0); i>=0; i=bs.nextUnsetBit(i+1)) { operate on index i here }- Parameters:
i
- current unset bit- Returns:
- next unset bit or -1
-
size
public int size()
Query the size- Returns:
- the size in bits.
-
unsetIntIterator
public IntIterator unsetIntIterator()
Iterate over the unset bits- Returns:
- an iterator
-
getNumberOfWords
public int getNumberOfWords()
-
getWord
public long getWord(int index)
-
-