Package dk.netarkivet.common.utils
Class SparseBitSet
- java.lang.Object
-
- java.util.BitSet
-
- dk.netarkivet.common.utils.SparseBitSet
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
public class SparseBitSet extends java.util.BitSet
A sparse implementation of a BitSet, that does not require memory linear to the largest index. This is done at the cost of performance, but should be fairly efficient on few set bits.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description SparseBitSet()
Initialise the bitset.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
and(java.util.BitSet set)
void
andNot(java.util.BitSet set)
int
cardinality()
void
clear()
void
clear(int bitIndex)
void
clear(int fromIndex, int toIndex)
java.lang.Object
clone()
boolean
equals(java.lang.Object obj)
Two SparseBitSets are considered equal if they contain the same bits.void
flip(int bitIndex)
void
flip(int fromIndex, int toIndex)
boolean
get(int bitIndex)
java.util.BitSet
get(int fromIndex, int toIndex)
int
hashCode()
A hash code for this bit set.boolean
intersects(java.util.BitSet set)
boolean
isEmpty()
int
length()
int
nextClearBit(int fromIndex)
int
nextSetBit(int fromIndex)
void
or(java.util.BitSet set)
void
set(int bitIndex)
void
set(int bitIndex, boolean value)
void
set(int fromIndex, int toIndex)
void
set(int fromIndex, int toIndex, boolean value)
int
size()
In contrast withBitSet.size()
this does not return the size in bytes used to represent this set.java.lang.String
toString()
void
xor(java.util.BitSet set)
-
-
-
Constructor Detail
-
SparseBitSet
public SparseBitSet()
Initialise the bitset.
-
-
Method Detail
-
flip
public void flip(int bitIndex)
- Overrides:
flip
in classjava.util.BitSet
-
flip
public void flip(int fromIndex, int toIndex)
- Overrides:
flip
in classjava.util.BitSet
-
set
public void set(int bitIndex)
- Overrides:
set
in classjava.util.BitSet
-
set
public void set(int bitIndex, boolean value)
- Overrides:
set
in classjava.util.BitSet
-
set
public void set(int fromIndex, int toIndex)
- Overrides:
set
in classjava.util.BitSet
-
set
public void set(int fromIndex, int toIndex, boolean value)
- Overrides:
set
in classjava.util.BitSet
-
clear
public void clear(int bitIndex)
- Overrides:
clear
in classjava.util.BitSet
-
clear
public void clear(int fromIndex, int toIndex)
- Overrides:
clear
in classjava.util.BitSet
-
clear
public void clear()
- Overrides:
clear
in classjava.util.BitSet
-
get
public boolean get(int bitIndex)
- Overrides:
get
in classjava.util.BitSet
-
get
public java.util.BitSet get(int fromIndex, int toIndex)
- Overrides:
get
in classjava.util.BitSet
-
nextSetBit
public int nextSetBit(int fromIndex)
- Overrides:
nextSetBit
in classjava.util.BitSet
-
nextClearBit
public int nextClearBit(int fromIndex)
- Overrides:
nextClearBit
in classjava.util.BitSet
-
length
public int length()
- Overrides:
length
in classjava.util.BitSet
-
isEmpty
public boolean isEmpty()
- Overrides:
isEmpty
in classjava.util.BitSet
-
intersects
public boolean intersects(java.util.BitSet set)
- Overrides:
intersects
in classjava.util.BitSet
-
cardinality
public int cardinality()
- Overrides:
cardinality
in classjava.util.BitSet
-
and
public void and(java.util.BitSet set)
- Overrides:
and
in classjava.util.BitSet
-
or
public void or(java.util.BitSet set)
- Overrides:
or
in classjava.util.BitSet
-
xor
public void xor(java.util.BitSet set)
- Overrides:
xor
in classjava.util.BitSet
-
andNot
public void andNot(java.util.BitSet set)
- Overrides:
andNot
in classjava.util.BitSet
-
hashCode
public int hashCode()
A hash code for this bit set. Note: The hash codes are not implemented to be compatible with java.util.BitSet#hashCode(). Implementing that algorithm would be difficult and inefficient on the current implementation.- Overrides:
hashCode
in classjava.util.BitSet
- Returns:
- A hashcode.
-
size
public int size()
In contrast withBitSet.size()
this does not return the size in bytes used to represent this set. Instead, it returns the same aslength()
for compatibility withBitSet
. The actual space used is a hashset of sizecardinality()
.- Overrides:
size
in classjava.util.BitSet
- Returns:
- the same as
length()
-
equals
public boolean equals(java.lang.Object obj)
Two SparseBitSets are considered equal if they contain the same bits.Note: A SparseBitSet is never considered equal to a BitSet. This would be impossible to implement in a way so equality is symmetric, since
BitSet.equals(Object)
is implemented using its private fields to determine equality.- Overrides:
equals
in classjava.util.BitSet
- Parameters:
obj
- The object to compare for equality.- Returns:
- true, if obj is a SparseBitSet and contains the same bits as this object.
-
clone
public java.lang.Object clone()
- Overrides:
clone
in classjava.util.BitSet
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.util.BitSet
-
-