X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Fdata%2FNode.java;h=3615b36c077465e33cdea0c557835fec3436d572;hb=c63257e8cc0ba1a5aca9364b22171abe7279d479;hp=560fc34ce7e9619e47c0df3872c4ae11040fc07d;hpb=f9979af9d9963cc5ad92ddb63b6193cba2bb1df1;p=jSite2.git diff --git a/src/net/pterodactylus/util/data/Node.java b/src/net/pterodactylus/util/data/Node.java index 560fc34..3615b36 100644 --- a/src/net/pterodactylus/util/data/Node.java +++ b/src/net/pterodactylus/util/data/Node.java @@ -1,36 +1,37 @@ package net.pterodactylus.util.data; +import java.util.Comparator; import java.util.Iterator; /** * A node that can be stored in a {@link Tree}. A node has exactly one parent * (which is null if the node is the {@link Tree#getRootNode()} * of the tree) and an arbitrary amount of child nodes. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> * @param * The type of the element to store */ -public interface Node extends Iterable> { +public interface Node> extends Iterable>, Comparable> { /** * Returns the parent node of the node. - * + * * @return The parent node */ public Node getParent(); /** * Returns the element that is stored in the node. - * + * * @return The node’s element */ public E getElement(); /** * Adds an element as a child to this node and returns the created node. - * + * * @param child * The child node’s element * @return The created child node @@ -39,14 +40,14 @@ public interface Node extends Iterable> { /** * Returns the number of children this node has. - * + * * @return The number of children */ public int size(); /** * Returns the child at the given index. - * + * * @param index * The index of the child * @return The child at the given index @@ -55,7 +56,7 @@ public interface Node extends Iterable> { /** * Returns the direct child node that contains the given element. - * + * * @param element * The element * @return The direct child node containing the given element, or @@ -66,7 +67,7 @@ public interface Node extends Iterable> { /** * Returns whether the given node is a direct child of this node. - * + * * @param childNode * The child node * @return true if the given node is a direct child of this @@ -77,7 +78,7 @@ public interface Node extends Iterable> { /** * Returns whether this node contains a child node containing the given * element. - * + * * @param element * The element * @return true if this node contains a direct child node @@ -87,7 +88,7 @@ public interface Node extends Iterable> { /** * Returns the index of the given child node. - * + * * @param childNode * The child node * @return The index of the child node, or -1 if the child @@ -97,7 +98,7 @@ public interface Node extends Iterable> { /** * Returns the index of the child node containing the given element. - * + * * @param element * The element * @return The index of the child node, or -1 if the child @@ -108,7 +109,7 @@ public interface Node extends Iterable> { /** * Remove the given child node from this node. If the given node is not a * child of this node, nothing happens. - * + * * @param childNode * The child node to remove */ @@ -117,7 +118,7 @@ public interface Node extends Iterable> { /** * Removes the child node that contains the given element. The element in * the node is checked using {@link Object#equals(Object)}. - * + * * @param child * The child element to remove */ @@ -125,7 +126,7 @@ public interface Node extends Iterable> { /** * Removes the child at the given index. - * + * * @param childIndex * The index of the child to remove */ @@ -144,7 +145,7 @@ public interface Node extends Iterable> { /** * Searches this node’s children recursively for a node that contains the * given element. - * + * * @param element * The element to search * @return The node that contains the given element, or null @@ -152,4 +153,17 @@ public interface Node extends Iterable> { */ public Node findChild(E element); + /** + * Sorts all children according to their natural order. + */ + public void sortChildren(); + + /** + * Sorts all children with the given comparator. + * + * @param comparator + * The comparator used to sort the children + */ + public void sortChildren(Comparator> comparator); + } \ No newline at end of file