Package org.roaringbitmap
Class RoaringArray
- java.lang.Object
-
- org.roaringbitmap.RoaringArray
-
- All Implemented Interfaces:
java.io.Externalizable,java.io.Serializable,java.lang.Cloneable,AppendableStorage<Container>
public final class RoaringArray extends java.lang.Object implements java.lang.Cloneable, java.io.Externalizable, AppendableStorage<Container>
Specialized array to store the containers used by a RoaringBitmap. This is not meant to be used by end users.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedRoaringArray()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected intadvanceUntil(char x, int pos)Find the smallest integer index larger than pos such that array[index].key>=x.voidappend(char key, Container value)Appends the key and container to the storage, throws if the key is less than the current mark.protected voidappend(RoaringArray sa, int startingIndex, int end)Append the values from another array, no copy is made (use with care)protected voidclear()RoaringArrayclone()voiddeserialize(java.io.DataInput in)Deserialize.voiddeserialize(java.io.DataInput in, byte[] buffer)Deserialize.voiddeserialize(java.nio.ByteBuffer bbf)Deserialize (retrieve) this bitmap.booleanequals(java.lang.Object o)intfirst()Gets the first value in the arrayprotected ContainergetContainer(char x)protected ContainergetContainerAtIndex(int i)ContainerPointergetContainerPointer()Create a ContainerPointer for this RoaringArrayContainerPointergetContainerPointer(int startIndex)Create a ContainerPointer for this RoaringArrayprotected chargetKeyAtIndex(int i)inthashCode()intlast()Gets the last value in the arrayvoidreadExternal(java.io.ObjectInput in)voidserialize(java.io.DataOutput out)Serialize.voidserialize(java.nio.ByteBuffer buffer)Serialize.intserializedSizeInBytes()Report the number of bytes required for serialization.protected intsize()voidtrim()If possible, recover wasted memory.voidwriteExternal(java.io.ObjectOutput out)
-
-
-
Method Detail
-
advanceUntil
protected int advanceUntil(char x, int pos)Find the smallest integer index larger than pos such that array[index].key>=x. If none can be found, return size. Based on code by O. Kaser.- Parameters:
x- minimal valuepos- index to exceed- Returns:
- the smallest index greater than pos such that array[index].key is at least as large as min, or size if it is not possible.
-
append
public void append(char key, Container value)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<Container>- Parameters:
key- the key to appendvalue- the data to append
-
append
protected void append(RoaringArray sa, int startingIndex, int end)
Append the values from another array, no copy is made (use with care)- Parameters:
sa- other arraystartingIndex- starting index in the other arrayend- endingIndex (exclusive) in the other array
-
clear
protected void clear()
-
trim
public void trim()
If possible, recover wasted memory.
-
clone
public RoaringArray clone() throws java.lang.CloneNotSupportedException
- Overrides:
clonein classjava.lang.Object- Throws:
java.lang.CloneNotSupportedException
-
deserialize
public void deserialize(java.io.DataInput in) throws java.io.IOExceptionDeserialize. If the DataInput is available as a byte[] or a ByteBuffer, you could prefer relying ondeserialize(ByteBuffer). If the InputStream is >= 8kB, you could prefer relying ondeserialize(DataInput, byte[]);- Parameters:
in- the DataInput stream- Throws:
java.io.IOException- Signals that an I/O exception has occurred.InvalidRoaringFormat- if a Roaring Bitmap cookie is missing.
-
deserialize
public void deserialize(java.io.DataInput in, byte[] buffer) throws java.io.IOExceptionDeserialize.- Parameters:
in- the DataInput streambuffer- The buffer gets overwritten with data during deserialization. You can pass a NULL reference as a buffer. A buffer containing at least 8192 bytes might be ideal for performance. It is recommended to reuse the buffer between calls to deserialize (in a single-threaded context) for best performance.- Throws:
java.io.IOException- Signals that an I/O exception has occurred.InvalidRoaringFormat- if a Roaring Bitmap cookie is missing.
-
deserialize
public void deserialize(java.nio.ByteBuffer bbf)
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.
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classjava.lang.Object
-
getContainer
protected Container getContainer(char x)
-
getContainerAtIndex
protected Container getContainerAtIndex(int i)
-
getContainerPointer
public ContainerPointer getContainerPointer()
Create a ContainerPointer for this RoaringArray- Returns:
- a ContainerPointer
-
getContainerPointer
public ContainerPointer getContainerPointer(int startIndex)
Create a ContainerPointer for this RoaringArray- Parameters:
startIndex- starting index in the container list- Returns:
- a ContainerPointer
-
getKeyAtIndex
protected char getKeyAtIndex(int i)
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException- Specified by:
readExternalin interfacejava.io.Externalizable- Throws:
java.io.IOException
-
serialize
public void serialize(java.io.DataOutput out) throws java.io.IOExceptionSerialize. The current bitmap is not modified.- Parameters:
out- the DataOutput stream- Throws:
java.io.IOException- Signals that an I/O exception has occurred.
-
serialize
public void serialize(java.nio.ByteBuffer buffer)
Serialize. The current bitmap is not modified.- Parameters:
buffer- the ByteBuffer to write to
-
serializedSizeInBytes
public int serializedSizeInBytes()
Report the number of bytes required for serialization.- Returns:
- the size in bytes
-
size
protected int size()
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException- Specified by:
writeExternalin interfacejava.io.Externalizable- Throws:
java.io.IOException
-
first
public int first()
Gets the first value in the array- Returns:
- the first value in the array
- Throws:
java.util.NoSuchElementException- if empty
-
last
public int last()
Gets the last value in the array- Returns:
- the last value in the array
- Throws:
java.util.NoSuchElementException- if empty
-
-