public class MapNodes
extends java.lang.Object
It adds in support for transient/linear updates, and allows for empty buffer space between the nodes and nodes to minimize allocations when a node is repeatedly updated in-place.
| Modifier and Type | Class and Description |
|---|---|
static class |
MapNodes.Collision<K,V> |
static class |
MapNodes.Node<K,V> |
| Constructor and Description |
|---|
MapNodes() |
| Modifier and Type | Method and Description |
|---|---|
static <K,V> boolean |
contains(MapNodes.Node<K,V> node,
int shift,
int hash,
K key,
java.util.function.BiPredicate<K,K> equals) |
static <K,V> MapNodes.Node<K,V> |
difference(int shift,
java.lang.Object editor,
MapNodes.Node<K,V> a,
MapNodes.Node<K,V> b,
java.util.function.BiPredicate<K,K> equals) |
static <K,V> io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> |
diffNodes(int shift,
java.lang.Object editor,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> a,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> b,
java.util.function.BiPredicate<K,K> equals) |
static <K,V> java.lang.Object |
get(MapNodes.Node<K,V> node,
int shift,
int hash,
K key,
java.util.function.BiPredicate<K,K> equals,
java.lang.Object defaultValue) |
static <K,V> MapNodes.Node<K,V> |
intersection(int shift,
java.lang.Object editor,
MapNodes.Node<K,V> a,
MapNodes.Node<K,V> b,
java.util.function.BiPredicate<K,K> equals) |
static <K,V> io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> |
intersectNodes(int shift,
java.lang.Object editor,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> a,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> b,
java.util.function.BiPredicate<K,K> equals) |
static <K,V> MapNodes.Node<K,V> |
merge(int shift,
java.lang.Object editor,
MapNodes.Node<K,V> a,
MapNodes.Node<K,V> b,
java.util.function.BiPredicate<K,K> equals,
java.util.function.BinaryOperator<V> merge) |
static <K,V> io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> |
mergeNodes(int shift,
java.lang.Object editor,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> a,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> b,
java.util.function.BiPredicate<K,K> equals,
java.util.function.BinaryOperator<V> merge) |
static <K,V> IList<MapNodes.Node<K,V>> |
split(java.lang.Object editor,
MapNodes.Node<K,V> node,
int targetSize) |
public static <K,V> boolean contains(MapNodes.Node<K,V> node, int shift, int hash, K key, java.util.function.BiPredicate<K,K> equals)
public static <K,V> java.lang.Object get(MapNodes.Node<K,V> node, int shift, int hash, K key, java.util.function.BiPredicate<K,K> equals, java.lang.Object defaultValue)
public static <K,V> io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> mergeNodes(int shift,
java.lang.Object editor,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> a,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> b,
java.util.function.BiPredicate<K,K> equals,
java.util.function.BinaryOperator<V> merge)
public static <K,V> MapNodes.Node<K,V> merge(int shift, java.lang.Object editor, MapNodes.Node<K,V> a, MapNodes.Node<K,V> b, java.util.function.BiPredicate<K,K> equals, java.util.function.BinaryOperator<V> merge)
public static <K,V> io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> diffNodes(int shift,
java.lang.Object editor,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> a,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> b,
java.util.function.BiPredicate<K,K> equals)
public static <K,V> MapNodes.Node<K,V> difference(int shift, java.lang.Object editor, MapNodes.Node<K,V> a, MapNodes.Node<K,V> b, java.util.function.BiPredicate<K,K> equals)
public static <K,V> io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> intersectNodes(int shift,
java.lang.Object editor,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> a,
io.lacuna.bifurcan.nodes.MapNodes.INode<K,V> b,
java.util.function.BiPredicate<K,K> equals)
public static <K,V> MapNodes.Node<K,V> intersection(int shift, java.lang.Object editor, MapNodes.Node<K,V> a, MapNodes.Node<K,V> b, java.util.function.BiPredicate<K,K> equals)
public static <K,V> IList<MapNodes.Node<K,V>> split(java.lang.Object editor, MapNodes.Node<K,V> node, int targetSize)