Package org.reactfx.util
Class FingerTree.Branch<T,S>
- java.lang.Object
-
- org.reactfx.util.FingerTree<T,S>
-
- org.reactfx.util.FingerTree.NonEmptyFingerTree<T,S>
-
- org.reactfx.util.FingerTree.Branch<T,S>
-
- Enclosing class:
- FingerTree<T,S>
private static final class FingerTree.Branch<T,S> extends FingerTree.NonEmptyFingerTree<T,S>
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.reactfx.util.FingerTree
FingerTree.NonEmptyFingerTree<T,S>
-
-
Constructor Summary
Constructors Modifier Constructor Description privateBranch(LL.Cons<FingerTree.NonEmptyFingerTree<T,S>> children)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) Either<FingerTree.Branch<T,S>,Tuple2<FingerTree.NonEmptyFingerTree<T,S>,FingerTree.NonEmptyFingerTree<T,S>>>appendLte(FingerTree<T,S> suffix)java.util.List<T>asList()Returns a list view of this tree.<R> Rfold(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction)(package private) <R> RfoldBetween0(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction, int startLeaf, int endLeaf)private <R> RfoldBetween0(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction, int startLeaf, int endLeaf, LL<? extends FingerTree<T,S>> nodes)(package private) <R> RfoldBetween0(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction, java.util.function.ToIntFunction<? super S> metric, int startPosition, int endPosition, TetraFunction<? super R,? super T,java.lang.Integer,java.lang.Integer,? extends R> rangeReduction)private <R> RfoldBetween0(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction, java.util.function.ToIntFunction<? super S> metric, int startPosition, int endPosition, TetraFunction<? super R,? super T,java.lang.Integer,java.lang.Integer,? extends R> rangeReduction, LL<? extends FingerTree<T,S>> nodes)(package private) TgetData()intgetDepth()(package private) TgetLeaf0(int index)private TgetLeaf0(int index, LL<? extends FingerTree<T,S>> nodes)intgetLeafCount()SgetSummary()(package private) SgetSummaryBetween0(int startLeaf, int endLeaf)private SgetSummaryBetween0(int startLeaf, int endLeaf, LL<? extends FingerTree<T,S>> nodes)(package private) SgetSummaryBetween0(java.util.function.ToIntFunction<? super S> metric, int startPosition, int endPosition, TriFunction<? super T,java.lang.Integer,java.lang.Integer,? extends S> subSummary)private SgetSummaryBetween0(java.util.function.ToIntFunction<? super S> metric, int startPosition, int endPosition, TriFunction<? super T,java.lang.Integer,java.lang.Integer,? extends S> subSummary, LL<? extends FingerTree<T,S>> nodes)java.util.Optional<S>getSummaryOpt()(package private) BiIndexlocate0(java.util.function.BiFunction<? super S,java.lang.Integer,Either<java.lang.Integer,java.lang.Integer>> navigate, int position)private BiIndexlocate0(java.util.function.BiFunction<? super S,java.lang.Integer,Either<java.lang.Integer,java.lang.Integer>> navigate, int position, LL<? extends FingerTree.NonEmptyFingerTree<T,S>> nodes)(package private) BiIndexlocateProgressively0(java.util.function.ToIntFunction<? super S> metric, int position)private BiIndexlocateProgressively0(java.util.function.ToIntFunction<? super S> metric, int position, LL<? extends FingerTree.NonEmptyFingerTree<T,S>> nodes)(package private) BiIndexlocateRegressively0(java.util.function.ToIntFunction<? super S> metric, int position)private BiIndexlocateRegressively0(java.util.function.ToIntFunction<? super S> metric, int position, LL<? extends FingerTree.NonEmptyFingerTree<T,S>> nodes)(package private) Either<FingerTree.Branch<T,S>,Tuple2<FingerTree.NonEmptyFingerTree<T,S>,FingerTree.NonEmptyFingerTree<T,S>>>prependLte(FingerTree<T,S> prefix)(package private) Tuple2<FingerTree<T,S>,FingerTree<T,S>>split0(int beforeLeaf)private Tuple2<FingerTree<T,S>,FingerTree<T,S>>split0(int beforeLeaf, LL<? extends FingerTree<T,S>> nodes)private java.util.List<T>subList(int from, int to)Complexity of calling once: O(log(n)).private java.util.List<T>subList0(int from, int to)java.lang.StringtoString()(package private) FingerTree.NonEmptyFingerTree<T,S>updateLeaf0(int index, T data)private LL.Cons<FingerTree.NonEmptyFingerTree<T,S>>updateLeaf0(int index, T data, LL<? extends FingerTree.NonEmptyFingerTree<T,S>> nodes)-
Methods inherited from class org.reactfx.util.FingerTree.NonEmptyFingerTree
appendTree, caseEmpty, join, locate, locateProgressively, locateRegressively, prependTree, split, split, splitAt
-
Methods inherited from class org.reactfx.util.FingerTree
append, empty, empty, foldBetween, foldBetween, get, get, getLeaf, getSummary, getSummaryBetween, getSummaryBetween, insertLeaf, isEmpty, leaf, measure, mkTree, mkTree, prepend, removeLeafs, split, updateLeaf
-
-
-
-
Field Detail
-
children
private final LL.Cons<FingerTree.NonEmptyFingerTree<T,S>> children
-
depth
private final int depth
-
leafCount
private final int leafCount
-
summary
private final S summary
-
-
Constructor Detail
-
Branch
private Branch(LL.Cons<FingerTree.NonEmptyFingerTree<T,S>> children)
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getDepth
public int getDepth()
- Specified by:
getDepthin classFingerTree<T,S>
-
getLeafCount
public int getLeafCount()
- Specified by:
getLeafCountin classFingerTree<T,S>
-
asList
public java.util.List<T> asList()
Description copied from class:FingerTreeReturns a list view of this tree. Complexity of operations on the returned list:size(): O(1);get: O(log(n));- iteration: O(n) in either direction, with O(log(n)) total allocations;
subList: O(log(n));- iterative
subList, i.e. callingsubListon the result of previoussubList, up to n times: O(n).
- Specified by:
asListin classFingerTree<T,S>
-
subList
private java.util.List<T> subList(int from, int to)
Complexity of calling once: O(log(n)). Complexity of calling subList recursively on the resulting list, i.e.tree.asList().subList(...).subList(...). ... .subList(...)up to n times: O(n). When the resulting list has size m, it may prevent up to m additional elements of the original tree from being garbage collected.
-
subList0
private java.util.List<T> subList0(int from, int to)
-
getData
final T getData()
- Specified by:
getDatain classFingerTree<T,S>
-
getLeaf0
final T getLeaf0(int index)
- Specified by:
getLeaf0in classFingerTree<T,S>
-
getLeaf0
private T getLeaf0(int index, LL<? extends FingerTree<T,S>> nodes)
-
updateLeaf0
FingerTree.NonEmptyFingerTree<T,S> updateLeaf0(int index, T data)
- Specified by:
updateLeaf0in classFingerTree<T,S>
-
updateLeaf0
private LL.Cons<FingerTree.NonEmptyFingerTree<T,S>> updateLeaf0(int index, T data, LL<? extends FingerTree.NonEmptyFingerTree<T,S>> nodes)
-
locateProgressively0
final BiIndex locateProgressively0(java.util.function.ToIntFunction<? super S> metric, int position)
- Specified by:
locateProgressively0in classFingerTree.NonEmptyFingerTree<T,S>
-
locateProgressively0
private BiIndex locateProgressively0(java.util.function.ToIntFunction<? super S> metric, int position, LL<? extends FingerTree.NonEmptyFingerTree<T,S>> nodes)
-
locateRegressively0
final BiIndex locateRegressively0(java.util.function.ToIntFunction<? super S> metric, int position)
- Specified by:
locateRegressively0in classFingerTree.NonEmptyFingerTree<T,S>
-
locateRegressively0
private BiIndex locateRegressively0(java.util.function.ToIntFunction<? super S> metric, int position, LL<? extends FingerTree.NonEmptyFingerTree<T,S>> nodes)
-
fold
public final <R> R fold(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction)- Specified by:
foldin classFingerTree<T,S>
-
foldBetween0
final <R> R foldBetween0(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction, int startLeaf, int endLeaf)- Specified by:
foldBetween0in classFingerTree<T,S>
-
foldBetween0
private <R> R foldBetween0(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction, int startLeaf, int endLeaf, LL<? extends FingerTree<T,S>> nodes)
-
foldBetween0
final <R> R foldBetween0(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction, java.util.function.ToIntFunction<? super S> metric, int startPosition, int endPosition, TetraFunction<? super R,? super T,java.lang.Integer,java.lang.Integer,? extends R> rangeReduction)- Specified by:
foldBetween0in classFingerTree<T,S>
-
foldBetween0
private <R> R foldBetween0(R acc, java.util.function.BiFunction<? super R,? super T,? extends R> reduction, java.util.function.ToIntFunction<? super S> metric, int startPosition, int endPosition, TetraFunction<? super R,? super T,java.lang.Integer,java.lang.Integer,? extends R> rangeReduction, LL<? extends FingerTree<T,S>> nodes)
-
getSummary
public S getSummary()
- Specified by:
getSummaryin classFingerTree.NonEmptyFingerTree<T,S>
-
getSummaryOpt
public java.util.Optional<S> getSummaryOpt()
- Specified by:
getSummaryOptin classFingerTree<T,S>
-
getSummaryBetween0
final S getSummaryBetween0(int startLeaf, int endLeaf)
- Specified by:
getSummaryBetween0in classFingerTree<T,S>
-
getSummaryBetween0
private S getSummaryBetween0(int startLeaf, int endLeaf, LL<? extends FingerTree<T,S>> nodes)
-
getSummaryBetween0
final S getSummaryBetween0(java.util.function.ToIntFunction<? super S> metric, int startPosition, int endPosition, TriFunction<? super T,java.lang.Integer,java.lang.Integer,? extends S> subSummary)
- Specified by:
getSummaryBetween0in classFingerTree<T,S>
-
getSummaryBetween0
private S getSummaryBetween0(java.util.function.ToIntFunction<? super S> metric, int startPosition, int endPosition, TriFunction<? super T,java.lang.Integer,java.lang.Integer,? extends S> subSummary, LL<? extends FingerTree<T,S>> nodes)
-
appendLte
Either<FingerTree.Branch<T,S>,Tuple2<FingerTree.NonEmptyFingerTree<T,S>,FingerTree.NonEmptyFingerTree<T,S>>> appendLte(FingerTree<T,S> suffix)
- Specified by:
appendLtein classFingerTree.NonEmptyFingerTree<T,S>
-
prependLte
Either<FingerTree.Branch<T,S>,Tuple2<FingerTree.NonEmptyFingerTree<T,S>,FingerTree.NonEmptyFingerTree<T,S>>> prependLte(FingerTree<T,S> prefix)
- Specified by:
prependLtein classFingerTree.NonEmptyFingerTree<T,S>
-
split0
Tuple2<FingerTree<T,S>,FingerTree<T,S>> split0(int beforeLeaf)
- Specified by:
split0in classFingerTree<T,S>
-
split0
private Tuple2<FingerTree<T,S>,FingerTree<T,S>> split0(int beforeLeaf, LL<? extends FingerTree<T,S>> nodes)
-
locate0
BiIndex locate0(java.util.function.BiFunction<? super S,java.lang.Integer,Either<java.lang.Integer,java.lang.Integer>> navigate, int position)
- Specified by:
locate0in classFingerTree.NonEmptyFingerTree<T,S>
-
-