java.lang.Object
org.roaringbitmap.buffer.MutableRoaringArray
- All Implemented Interfaces:
Externalizable,Serializable,Cloneable,AppendableStorage<MappeableContainer>,PointableRoaringArray
public final class MutableRoaringArray
extends Object
implements Cloneable, Externalizable, PointableRoaringArray, AppendableStorage<MappeableContainer>
Specialized array to store the containers used by a RoaringBitmap. This class is similar to
org.roaringbitmap.RoaringArray but meant to be used with memory mapping. This is not meant to be
used by end users.
Objects of this class reside in RAM.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final intprotected static final intprotected static final shortprotected static final short -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintadvanceUntil(char x, int pos) Find the smallest integer index larger than pos such that getKeyAtIndex(index)>=x.voidappend(char key, MappeableContainer value) Appends the key and container to the storage, throws if the key is less than the current mark.protected voidappendCopiesAfter(PointableRoaringArray highLowContainer, char beforeStart) Append copies of the values AFTER a specified key (may or may not be present) to end.protected voidappendCopiesUntil(PointableRoaringArray highLowContainer, char stoppingKey) Append copies of the values from another array, from the startprotected voidappendCopy(char key, MappeableContainer value) protected voidappendCopy(PointableRoaringArray highLowContainer, int startingIndex, int end) Append copies of the values from another arrayprotected voidclear()clone()Create an independent copy of the underlying arraybooleancontainsForContainerAtIndex(int i, char x) This checks whether the container at index i has the value x.protected voidcopyRange(int begin, int end, int newBegin) voiddeserialize(DataInput in) Deserialize.voiddeserialize(ByteBuffer bbf) Deserialize (retrieve) this bitmap.booleanprotected voidextendArray(int k) intfirst()Gets the smallest unsigned (first) integer in the array.intGets the smallest signed integer in the array.intgetCardinality(int i) Returns the cardinality of the container at the given index.getContainerAtIndex(int i) intgetContainerIndex(char x) Returns either the index of the container corresponding to key x, or a negative value.getContainerPointer(int startIndex) intgetIndex(char x) chargetKeyAtIndex(int i) inthashCode()booleanCheck whether this bitmap has had its runs compressed.protected intprotected voidinsertNewKeyValueAt(int i, char key, MappeableContainer value) intlast()Gets the largest unsigned (last) integer in the array.intGets the largest signed integer in the array.voidprotected voidremoveAtIndex(int i) protected voidremoveIndexRange(int begin, int end) protected voidreplaceKeyAndContainerAtIndex(int i, char key, MappeableContainer c) protected voidresize(int newLength) voidserialize(DataOutput out) Serialize.voidserialize(ByteBuffer buffer) Serialize.intReport the number of bytes required for serialization.protected voidsetContainerAtIndex(int i, MappeableContainer c) intsize()voidtrim()If possible, recover wasted memory.void
-
Field Details
-
INITIAL_CAPACITY
protected static final int INITIAL_CAPACITY- See Also:
-
SERIAL_COOKIE_NO_RUNCONTAINER
protected static final short SERIAL_COOKIE_NO_RUNCONTAINER- See Also:
-
SERIAL_COOKIE
protected static final short SERIAL_COOKIE- See Also:
-
NO_OFFSET_THRESHOLD
protected static final int NO_OFFSET_THRESHOLD- See Also:
-
-
Constructor Details
-
MutableRoaringArray
protected MutableRoaringArray() -
MutableRoaringArray
public MutableRoaringArray(int initialCapacity)
-
-
Method Details
-
advanceUntil
public int advanceUntil(char x, int pos) Description copied from interface:PointableRoaringArrayFind the smallest integer index larger than pos such that getKeyAtIndex(index)>=x. If none can be found, return size.- Specified by:
advanceUntilin interfacePointableRoaringArray- Parameters:
x- minimal valuepos- index to exceed- Returns:
- the smallest index greater than pos such that getKeyAtIndex(index) is at least as large as min, or size if it is not possible.
-
append
Description copied from interface:AppendableStorageAppends the key and container to the storage, throws if the key is less than the current mark.- Specified by:
appendin interfaceAppendableStorage<MappeableContainer>- Parameters:
key- the key to appendvalue- the data to append
-
appendCopiesAfter
Append copies of the values AFTER a specified key (may or may not be present) to end.- Parameters:
highLowContainer- the other arraybeforeStart- given key is the largest key that we won't copy
-
appendCopiesUntil
Append copies of the values from another array, from the start- Parameters:
highLowContainer- the other arraystoppingKey- any equal or larger key in other array will terminate copying
-
appendCopy
Append copies of the values from another array- Parameters:
highLowContainer- other arraystartingIndex- starting index in the other arrayend- last index array in the other array
-
appendCopy
-
clear
protected void clear() -
trim
public void trim()If possible, recover wasted memory. -
clone
Description copied from interface:PointableRoaringArrayCreate an independent copy of the underlying array- Specified by:
clonein interfacePointableRoaringArray- Overrides:
clonein classObject- Returns:
- a copy
-
copyRange
protected void copyRange(int begin, int end, int newBegin) -
deserialize
Deserialize.- Parameters:
in- the DataInput stream- Throws:
IOException- Signals that an I/O exception has occurred.
-
deserialize
Deserialize (retrieve) this bitmap. See format specification at https://github.com/RoaringBitmap/RoaringFormatSpec The current bitmap is overwritten. It is not necessary that limit() on the input ByteBuffer indicates the end of the serialized data. After loading this RoaringBitmap, you can advance to the rest of the data (if there is more) by setting bbf.position(bbf.position() + bitmap.serializedSizeInBytes()); Note that the input ByteBuffer is effectively copied (with the slice operation) so you should expect the provided ByteBuffer position/mark/limit/order to remain unchanged.- Parameters:
bbf- the byte buffer (can be mapped, direct, array backed etc.
-
extendArray
protected void extendArray(int k) -
getCardinality
public int getCardinality(int i) Description copied from interface:PointableRoaringArrayReturns the cardinality of the container at the given index. This method is expected to be fast.- Specified by:
getCardinalityin interfacePointableRoaringArray- Parameters:
i- index- Returns:
- the cardinality
-
getContainerIndex
public int getContainerIndex(char x) Description copied from interface:PointableRoaringArrayReturns either the index of the container corresponding to key x, or a negative value.- Specified by:
getContainerIndexin interfacePointableRoaringArray- Parameters:
x- 16-bit key- Returns:
- index of container (negative value if no container found)
-
getContainerAtIndex
- Specified by:
getContainerAtIndexin interfacePointableRoaringArray- Parameters:
i- index- Returns:
- matching container
-
getContainerPointer
- Specified by:
getContainerPointerin interfacePointableRoaringArray- Returns:
- a ContainerPointer to iterator over the array
-
getContainerPointer
- Specified by:
getContainerPointerin interfacePointableRoaringArray- Parameters:
startIndex- starting index- Returns:
- a ContainerPointer to iterator over the array initially positioned at startIndex
-
getIndex
public int getIndex(char x) - Specified by:
getIndexin interfacePointableRoaringArray- Parameters:
x- 16-bit key- Returns:
- corresponding index
-
getKeyAtIndex
public char getKeyAtIndex(int i) - Specified by:
getKeyAtIndexin interfacePointableRoaringArray- Parameters:
i- the index- Returns:
- 16-bit key at the index
-
equals
-
hashCode
-
hasRunCompression
public boolean hasRunCompression()Description copied from interface:PointableRoaringArrayCheck whether this bitmap has had its runs compressed.- Specified by:
hasRunCompressionin interfacePointableRoaringArray- Returns:
- whether this bitmap has run compression
-
headerSize
protected int headerSize() -
insertNewKeyValueAt
-
readExternal
- Specified by:
readExternalin interfaceExternalizable- Throws:
IOExceptionClassNotFoundException
-
removeAtIndex
protected void removeAtIndex(int i) -
removeIndexRange
protected void removeIndexRange(int begin, int end) -
replaceKeyAndContainerAtIndex
-
resize
protected void resize(int newLength) -
serialize
Serialize. The current bitmap is not modified.- Specified by:
serializein interfacePointableRoaringArray- Parameters:
out- the DataOutput stream- Throws:
IOException- Signals that an I/O exception has occurred.
-
serialize
Serialize. The current bitmap is not modified.- Specified by:
serializein interfacePointableRoaringArray- Parameters:
buffer- the ByteBuffer to write to
-
serializedSizeInBytes
public int serializedSizeInBytes()Report the number of bytes required for serialization.- Specified by:
serializedSizeInBytesin interfacePointableRoaringArray- Returns:
- the size in bytes
-
setContainerAtIndex
-
size
public int size()- Specified by:
sizein interfacePointableRoaringArray- Returns:
- number of keys
-
writeExternal
- Specified by:
writeExternalin interfaceExternalizable- Throws:
IOException
-
containsForContainerAtIndex
public boolean containsForContainerAtIndex(int i, char x) Description copied from interface:PointableRoaringArrayThis checks whether the container at index i has the value x. This can be faster than calling "getContainerAtIndex" and then calling contains.- Specified by:
containsForContainerAtIndexin interfacePointableRoaringArray- Parameters:
i- container index (assumed to be non-negative)x- 16-bit value to check- Returns:
- whether the container contains at index i contains x
-
first
public int first()Description copied from interface:PointableRoaringArrayGets the smallest unsigned (first) integer in the array.- Specified by:
firstin interfacePointableRoaringArray- Returns:
- the smallest unsigned (first) integer in the array
-
last
public int last()Description copied from interface:PointableRoaringArrayGets the largest unsigned (last) integer in the array.- Specified by:
lastin interfacePointableRoaringArray- Returns:
- the largest unsigned (last) integer in the array
-
firstSigned
public int firstSigned()Description copied from interface:PointableRoaringArrayGets the smallest signed integer in the array.- Specified by:
firstSignedin interfacePointableRoaringArray- Returns:
- the smallest signed integer in the array
-
lastSigned
public int lastSigned()Description copied from interface:PointableRoaringArrayGets the largest signed integer in the array.- Specified by:
lastSignedin interfacePointableRoaringArray- Returns:
- the largest signed integer in the array
-