public class Page
extends java.lang.Object
For b-tree nodes, the key at a given index is larger than the largest key of the child at the same index.
File format: page length (including length): int check value: short map id: varInt number of keys: varInt type: byte (0: leaf, 1: node; +2: compressed) compressed: bytes saved (varInt) keys leaf: values (one for each key) node: children (1 more than keys)
| Modifier and Type | Class and Description |
|---|---|
static class |
Page.PageChildren
Contains information about which other pages are referenced (directly or
indirectly) by the given page.
|
static class |
Page.PageReference
A pointer to a page, either in-memory or using a page position.
|
| Modifier and Type | Field and Description |
|---|---|
static java.lang.Object[] |
EMPTY_OBJECT_ARRAY
An empty object array.
|
| Modifier and Type | Method and Description |
|---|---|
int |
binarySearch(java.lang.Object key)
Search the key in this page using a binary search.
|
Page |
copy(long version)
Create a copy of this page.
|
static Page |
create(MVMap<?,?> map,
long version,
java.lang.Object[] keys,
java.lang.Object[] values,
Page.PageReference[] children,
long totalCount,
int memory)
Create a new page.
|
static Page |
create(MVMap<?,?> map,
long version,
Page source)
Create a copy of a page.
|
boolean |
equals(java.lang.Object other) |
Page |
getChildPage(int index)
Get the child page at the given index.
|
long |
getChildPagePos(int index)
Get the position of the child.
|
java.lang.Object |
getKey(int index)
Get the key at the given index.
|
int |
getKeyCount()
Get the number of keys in this page.
|
int |
getMemory() |
long |
getPos()
Get the position of the page
|
int |
getRawChildPageCount() |
long |
getTotalCount()
Get the total number of key-value pairs, including child pages.
|
java.lang.Object |
getValue(int index)
Get the value at the given index.
|
int |
hashCode() |
void |
insertLeaf(int index,
java.lang.Object key,
java.lang.Object value)
Insert a key-value pair into this leaf.
|
void |
insertNode(int index,
java.lang.Object key,
Page childPage)
Insert a child page into this node.
|
boolean |
isLeaf()
Check whether this is a leaf page.
|
void |
remove(int index)
Remove the key and value (or child) at the given index.
|
void |
removePage()
Remove the page.
|
void |
setChild(int index,
Page c)
Replace the child page.
|
void |
setKey(int index,
java.lang.Object key)
Replace the key at an index in this page.
|
java.lang.Object |
setValue(int index,
java.lang.Object value)
Replace the value at an index in this page.
|
java.lang.String |
toString() |
public static final java.lang.Object[] EMPTY_OBJECT_ARRAY
public static Page create(MVMap<?,?> map, long version, java.lang.Object[] keys, java.lang.Object[] values, Page.PageReference[] children, long totalCount, int memory)
map - the mapversion - the versionkeys - the keysvalues - the valueschildren - the child page positionstotalCount - the total number of keysmemory - the memory used in bytespublic static Page create(MVMap<?,?> map, long version, Page source)
map - the mapversion - the versionsource - the source pagepublic java.lang.Object getKey(int index)
index - the indexpublic Page getChildPage(int index)
index - the indexpublic long getChildPagePos(int index)
index - the indexpublic java.lang.Object getValue(int index)
index - the indexpublic int getKeyCount()
public boolean isLeaf()
public long getPos()
public java.lang.String toString()
toString in class java.lang.Objectpublic Page copy(long version)
version - the new versionpublic int binarySearch(java.lang.Object key)
If the key was found, the returned value is the index in the key array. If not found, the returned value is negative, where -1 means the provided key is smaller than any keys in this page. See also Arrays.binarySearch.
key - the keypublic long getTotalCount()
public void setChild(int index,
Page c)
index - the indexc - the new child pagepublic void setKey(int index,
java.lang.Object key)
index - the indexkey - the new keypublic java.lang.Object setValue(int index,
java.lang.Object value)
index - the indexvalue - the new valuepublic void insertLeaf(int index,
java.lang.Object key,
java.lang.Object value)
index - the indexkey - the keyvalue - the valuepublic void insertNode(int index,
java.lang.Object key,
Page childPage)
index - the indexkey - the keychildPage - the child pagepublic void remove(int index)
index - the indexpublic int getRawChildPageCount()
public boolean equals(java.lang.Object other)
equals in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic int getMemory()
public void removePage()