Class Tree.Node<T>
- Type Parameters:
T- value type
- All Implemented Interfaces:
Foldable<T>,Traversable<T>,Tree<T>,Value<T>,Serializable,Iterable<T>
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final classA serialization proxy which, in this context, is used to deserialize immutable nodes with final instance fields.Nested classes/interfaces inherited from interface io.vavr.collection.Tree
Tree.Empty<T>, Tree.Node<T>, Tree.Order -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondraw()Creates a neat 2-dimensional drawing of a tree.private voiddrawAux(String indent, StringBuilder builder) booleanDetermines whether this collection is equal to the given object.Returns the children of this tree.getValue()Gets the value of this tree.inthashCode()Returns the hash code of this collection.booleanisEmpty()Checks if this Traversable contains no elements.booleanisLeaf()Checks if this Tree is a leaf.last()Returns the last element of this Traversable.intlength()Returns the number of elements in this Traversable.private voidreadObject(ObjectInputStream stream) readObjectmethod for the serialization proxy pattern.Creates a Lisp-like representation of thisTree.private static StringtoLispString(Tree<?> tree) toString()Clarifies that values have a proper toString() method implemented.private ObjectwriteReplacemethod for the serialization proxy pattern.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface io.vavr.collection.Foldable
fold, reduce, reduceOptionMethods inherited from interface io.vavr.collection.Traversable
arrangeBy, average, containsAll, count, existsUnique, find, findLast, foldLeft, forEachWithIndex, get, headOption, isOrdered, isSingleValued, lastOption, max, maxBy, maxBy, min, minBy, minBy, mkCharSeq, mkCharSeq, mkCharSeq, mkString, mkString, mkString, nonEmpty, product, reduceLeft, reduceLeftOption, reduceRight, reduceRightOption, single, singleOption, size, spliterator, sumMethods inherited from interface io.vavr.collection.Tree
branchCount, collect, distinct, distinctBy, distinctBy, drop, dropRight, dropUntil, dropWhile, filter, flatMap, foldRight, groupBy, grouped, hasDefiniteSize, head, init, initOption, isAsync, isBranch, isDistinct, isLazy, isSequential, isTraversableAgain, iterator, iterator, leafCount, map, mapTo, mapToVoid, nodeCount, orElse, orElse, partition, peek, reject, replace, replaceAll, retainAll, scan, scanLeft, scanRight, slideBy, sliding, sliding, span, stringPrefix, tail, tailOption, take, takeRight, takeUntil, takeWhile, transform, traverse, traverse, unzip, unzip3, values, values, zip, zipAll, zipWith, zipWithIndex, zipWithIndexMethods inherited from interface io.vavr.Value
collect, collect, contains, corresponds, eq, exists, forAll, forEach, getOrElse, getOrElse, getOrElseThrow, getOrElseTry, getOrNull, out, out, stderr, stdout, toArray, toCharSeq, toCompletableFuture, toEither, toEither, toInvalid, toInvalid, toJavaArray, toJavaArray, toJavaArray, toJavaCollection, toJavaList, toJavaList, toJavaMap, toJavaMap, toJavaMap, toJavaOptional, toJavaParallelStream, toJavaSet, toJavaSet, toJavaStream, toLeft, toLeft, toLinkedMap, toLinkedMap, toLinkedSet, toList, toMap, toMap, toOption, toPriorityQueue, toPriorityQueue, toQueue, toRight, toRight, toSet, toSortedMap, toSortedMap, toSortedMap, toSortedMap, toSortedSet, toSortedSet, toStream, toTree, toTree, toTry, toTry, toValid, toValid, toValidation, toValidation, toVector
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
value
-
children
-
size
private final int size
-
-
Constructor Details
-
Node
Constructs a rose tree branch.- Parameters:
value- A value.children- A non-empty list of children.- Throws:
NullPointerException- if children is nullIllegalArgumentException- if children is empty
-
-
Method Details
-
getChildren
Description copied from interface:TreeReturns the children of this tree.- Specified by:
getChildrenin interfaceTree<T>- Returns:
- the tree's children
-
getValue
Description copied from interface:TreeGets the value of this tree. -
isEmpty
public boolean isEmpty()Description copied from interface:TraversableChecks if this Traversable contains no elements. -
length
public int length()Description copied from interface:TraversableReturns the number of elements in this Traversable.Equivalent to
Traversable.size().- Specified by:
lengthin interfaceTraversable<T>- Returns:
- the number of elements
-
isLeaf
public boolean isLeaf()Description copied from interface:TreeChecks if this Tree is a leaf. A tree is a leaf if it is a Node with no children. Because the empty tree is no Node, it is not a leaf by definition. -
last
Description copied from interface:TraversableReturns the last element of this Traversable.- Specified by:
lastin interfaceTraversable<T>- Returns:
- the last element
-
equals
Description copied from interface:TraversableDetermines whether this collection is equal to the given object.In Vavr, there are four basic collection types:
Seq– sequential elementsSet– distinct elementsMap– key-value pairsMultimap– keys mapped to multiple values
- They are of the same collection type (Seq, Set, Map, Multimap)
- They contain the same elements
- For
Seq, the element order is the same
For
MapandMultimap, two entries(key1, value1)and(key2, value2)are equal if both their keys and values are equal.Additional notes:
- No collection equals
null(e.g.,Queue(1) != null) - Null elements are allowed and treated as expected
(e.g.,
List(null, 1) == Stream(null, 1),HashMap((null,1)) == LinkedHashMap((null,1))) - Element order matters only for
Seq - Other collection classes are equal if their types and elements (in iteration order) are equal
- Iterators are compared by reference only
- Specified by:
equalsin interfaceTraversable<T>- Specified by:
equalsin interfaceTree<T>- Specified by:
equalsin interfaceValue<T>- Overrides:
equalsin classObject- Parameters:
o- the object to compare with, may benull- Returns:
trueif the collections are equal according to the rules above,falseotherwise
-
hashCode
public int hashCode()Description copied from interface:TraversableReturns the hash code of this collection.Vavr distinguishes between collections with predictable iteration order (like
Seq) and collections with arbitrary iteration order (likeSet,Map, andMultimap). In all cases, the hash of an empty collection is defined as1.For collections with predictable iteration order, the hash is computed as:
int hash = 1; for (T t : this) { hash = hash * 31 + Objects.hashCode(t); }For collections with arbitrary iteration order, the hash is computed to be independent of element order:
int hash = 1; for (T t : this) { hash += Objects.hashCode(t); }Note that these algorithms may change in future Vavr versions. Hash codes are generally not cached, unlike size/length, because caching would increase memory usage due to persistent tree-based structures. Computing the hash code is linear in time, O(n). For frequently re-used collections (e.g., as
HashMapkeys), caching can be done externally using a wrapper, for example:public final class Hashed<K> { private final K key; private final Lazy<Integer> hashCode; public Hashed(K key) { this.key = key; this.hashCode = Lazy.of(() -> Objects.hashCode(key)); } public K key() { return key; } @Override public boolean equals(Object o) { if (o == key) return true; if (key != null && o instanceof Hashed) return key.equals(((Hashed<?>) o).key); return false; } @Override public int hashCode() { return hashCode.get(); } @Override public String toString() { return "Hashed(" + key + ")"; } } -
toString
Description copied from interface:ValueClarifies that values have a proper toString() method implemented.See Object.toString().
-
toLispString
Description copied from interface:TreeCreates a Lisp-like representation of thisTree.- Specified by:
toLispStringin interfaceTree<T>- Returns:
- This
Treeas Lisp-string, i.e. represented as list of lists.
-
draw
Description copied from interface:TreeCreates a neat 2-dimensional drawing of a tree. Unicode characters are used to draw node junctions. -
drawAux
-
toLispString
-
writeReplace
@GwtIncompatible("The Java serialization protocol is explicitly not supported") private Object writeReplace()writeReplacemethod for the serialization proxy pattern.The presence of this method causes the serialization system to emit a SerializationProxy instance instead of an instance of the enclosing class.
- Returns:
- A SerializationProxy for this enclosing class.
-
readObject
@GwtIncompatible("The Java serialization protocol is explicitly not supported") private void readObject(ObjectInputStream stream) throws InvalidObjectException readObjectmethod for the serialization proxy pattern.Guarantees that the serialization system will never generate a serialized instance of the enclosing class.
- Parameters:
stream- An object serialization stream.- Throws:
InvalidObjectException- This method will throw with the message "Proxy required".
-