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 BitSetasBitSet()Get a copy of this ImmutableBitSet as a mutable BitSet.intcardinality()Compute the number of bits set to 1ImmutableBitSetclone()booleanempty()Check whether a bitset contains a set bit.booleanequals(Object o)booleanget(int i)get value of bit iintgetNumberOfWords()longgetWord(int index)inthashCode()booleanintersects(BitSet bs)Checks whether two bitsets intersect.IntIteratorintIterator()Iterate over the set bitsIterator<Integer>iterator()intnextSetBit(int i)Usage: for(int i=bs.nextSetBit(0); i>=0; i=bs.nextSetBit(i+1)) { operate on index i here }intnextUnsetBit(int i)Usage: for(int i=bs.nextUnsetBit(0); i>=0; i=bs.nextUnsetBit(i+1)) { operate on index i here }intsize()Query the sizeStringtoString()IntIteratorunsetIntIterator()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)
-
-