Package org.roaringbitmap.art
Class Node
- java.lang.Object
-
- org.roaringbitmap.art.Node
-
-
Field Summary
Fields Modifier and Type Field Description protected shortcountstatic intILLEGAL_IDXprotected NodeTypenodeTypeprotected byte[]prefixprotected byteprefixLength
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static intbinarySearch(byte[] key, int fromIndex, int toIndex, byte k)search the position of the input byte key in the node's key byte array partstatic voidcopyPrefix(Node src, Node dst)copy the prefix between two nodesstatic Nodedeserialize(java.io.DataInput dataInput)deserialize into a typed node from the byte streamstatic Nodedeserialize(java.nio.ByteBuffer byteBuffer)deserialize into a typed nodeabstract NodegetChild(int pos)get the child at the specified position in the node, the 'pos' range from 0 to countabstract intgetChildPos(byte k)get the position of a child corresponding to the input key 'k'abstract intgetMaxPos()get the max child's positionabstract intgetMinPos()get the position of the min element in current node.abstract intgetNextLargerPos(int pos)get the next position in the nodeabstract intgetNextSmallerPos(int pos)get the next smaller element's positionstatic NodeinsertLeaf(Node current, LeafNode childNode, byte key)insert the LeafNode as a child of the current internal nodeabstract Noderemove(int pos)remove the specified position childabstract voidreplaceNode(int pos, Node freshOne)replace the position child to the fresh onevoidserialize(java.io.DataOutput dataOutput)serializevoidserialize(java.nio.ByteBuffer byteBuffer)serializeabstract intserializeNodeBodySizeInBytes()the serialized size except the common node header partintserializeSizeInBytes()the serialized size in bytes of this node
-
-
-
Field Detail
-
nodeType
protected NodeType nodeType
-
prefixLength
protected byte prefixLength
-
prefix
protected byte[] prefix
-
count
protected short count
-
ILLEGAL_IDX
public static final int ILLEGAL_IDX
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Node
public Node(NodeType nodeType, int compressedPrefixSize)
constructor- Parameters:
nodeType- the node typecompressedPrefixSize- the prefix byte array size,less than or equal to 6
-
-
Method Detail
-
getChildPos
public abstract int getChildPos(byte k)
get the position of a child corresponding to the input key 'k'- Parameters:
k- a key value of the byte range- Returns:
- the child position corresponding to the key 'k'
-
getChild
public abstract Node getChild(int pos)
get the child at the specified position in the node, the 'pos' range from 0 to count- Parameters:
pos- the position- Returns:
- a Node corresponding to the input position
-
replaceNode
public abstract void replaceNode(int pos, Node freshOne)replace the position child to the fresh one- Parameters:
pos- the positionfreshOne- the fresh node to replace the old one
-
getMinPos
public abstract int getMinPos()
get the position of the min element in current node.- Returns:
- the minimum key's position
-
getNextLargerPos
public abstract int getNextLargerPos(int pos)
get the next position in the node- Parameters:
pos- current position,-1 to start from the min one- Returns:
- the next larger byte key's position which is close to 'pos' position,-1 for end
-
getMaxPos
public abstract int getMaxPos()
get the max child's position- Returns:
- the max byte key's position
-
getNextSmallerPos
public abstract int getNextSmallerPos(int pos)
get the next smaller element's position- Parameters:
pos- the position,-1 to start from the largest one- Returns:
- the next smaller key's position which is close to input 'pos' position,-1 for end
-
remove
public abstract Node remove(int pos)
remove the specified position child- Parameters:
pos- the position to remove- Returns:
- an adaptive changed fresh node of the current node
-
serialize
public void serialize(java.io.DataOutput dataOutput) throws java.io.IOExceptionserialize- Parameters:
dataOutput- the DataOutput- Throws:
java.io.IOException- signal a exception happened while the serialization
-
serialize
public void serialize(java.nio.ByteBuffer byteBuffer) throws java.io.IOExceptionserialize- Parameters:
byteBuffer- the ByteBuffer- Throws:
java.io.IOException- signal a exception happened while the serialization
-
serializeSizeInBytes
public int serializeSizeInBytes()
the serialized size in bytes of this node- Returns:
- the size in bytes
-
deserialize
public static Node deserialize(java.io.DataInput dataInput) throws java.io.IOException
deserialize into a typed node from the byte stream- Parameters:
dataInput- the input byte stream- Returns:
- the typed node
- Throws:
java.io.IOException- indicate a exception happened
-
deserialize
public static Node deserialize(java.nio.ByteBuffer byteBuffer) throws java.io.IOException
deserialize into a typed node- Parameters:
byteBuffer- the ByteBuffer- Returns:
- the typed node
- Throws:
java.io.IOException- indicate a exception happened
-
serializeNodeBodySizeInBytes
public abstract int serializeNodeBodySizeInBytes()
the serialized size except the common node header part- Returns:
- the size in bytes
-
insertLeaf
public static Node insertLeaf(Node current, LeafNode childNode, byte key)
insert the LeafNode as a child of the current internal node- Parameters:
current- current internal nodechildNode- the leaf nodekey- the key byte reference to the child leaf node- Returns:
- an adaptive changed node of the input 'current' node
-
copyPrefix
public static void copyPrefix(Node src, Node dst)
copy the prefix between two nodes- Parameters:
src- the source nodedst- the destination node
-
binarySearch
public static int binarySearch(byte[] key, int fromIndex, int toIndex, byte k)search the position of the input byte key in the node's key byte array part- Parameters:
key- the input key byte arrayfromIndex- inclusivetoIndex- exclusivek- the target key byte value- Returns:
- the array offset of the target input key 'k' or -1 to not found
-
-