Interface Path
-
public interface Path extends Cloneable, Iterable<Object>
A Path denotes a particular walk through aGraphas defined by aTraversal. In abstraction, any Path implementation maintains two lists: a list of sets of labels and a list of objects. The list of labels are the labels of the steps traversed. The list of objects are the objects traversed.- Author:
- Marko A. Rodriguez (http://markorodriguez.com)
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static classPath.Exceptions
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description Pathclone()Pathextend(Object object, Set<String> labels)Add a new step to the path with an object and any number of associated labels.Pathextend(Set<String> labels)Add labels to the head of the path.default voidforEach(BiConsumer<Object,Set<String>> consumer)default <A> Aget(int index)Get the object associated with the specified index into the path.default <A> Aget(String label)Get the object associated with the particular label of the path.default <A> Aget(Pop pop, String label)Pop the object(s) associated with the label of the path.default booleanhasLabel(String label)Return true if the path has the specified label, else return false.default <A> Ahead()Get the head of the path.default booleanisEmpty()Determine if the path is empty or not.default booleanisSimple()Determines whether the path is a simple or not.default Iterator<Object>iterator()List<Set<String>>labels()An ordered list of the labels associated with the path The set of labels for a particular step are ordered by the order in whichextend(Object, Set)was called.List<Object>objects()An ordered list of the objects in the path.default booleanpopEquals(Pop pop, Object other)Pathretract(Set<String> labels)Remove labels from path.default intsize()Get the number of step in the path.default Stream<org.javatuples.Pair<Object,Set<String>>>stream()default PathsubPath(String fromLabel, String toLabel)Isolate a sub-path from the path object.-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Method Detail
-
size
default int size()
Get the number of step in the path.- Returns:
- the size of the path
-
isEmpty
default boolean isEmpty()
Determine if the path is empty or not.- Returns:
- whether the path is empty or not.
-
head
default <A> A head()
Get the head of the path.- Type Parameters:
A- the type of the head of the path- Returns:
- the head of the path
-
extend
Path extend(Object object, Set<String> labels)
Add a new step to the path with an object and any number of associated labels.- Parameters:
object- the new head of the pathlabels- the labels at the head of the path- Returns:
- the extended path
-
extend
Path extend(Set<String> labels)
Add labels to the head of the path.- Parameters:
labels- the labels at the head of the path- Returns:
- the path with added labels
-
retract
Path retract(Set<String> labels)
Remove labels from path.- Parameters:
labels- the labels to remove- Returns:
- the path with removed labels
-
get
default <A> A get(String label) throws IllegalArgumentException
Get the object associated with the particular label of the path. If the path as multiple labels of the type, then return aListof those objects.- Type Parameters:
A- the type of the object associated with the label- Parameters:
label- the label of the path- Returns:
- the object associated with the label of the path
- Throws:
IllegalArgumentException- if the path does not contain the label
-
get
default <A> A get(Pop pop, String label) throws IllegalArgumentException
Pop the object(s) associated with the label of the path.- Type Parameters:
A- the type of the object associated with the label- Parameters:
pop- first for least recent, last for most recent, and all for all in a listlabel- the label of the path- Returns:
- the object associated with the label of the path
- Throws:
IllegalArgumentException- if the path does not contain the label
-
get
default <A> A get(int index)
Get the object associated with the specified index into the path.- Type Parameters:
A- the type of the object associated with the index- Parameters:
index- the index of the path- Returns:
- the object associated with the index of the path
-
hasLabel
default boolean hasLabel(String label)
Return true if the path has the specified label, else return false.- Parameters:
label- the label to search for- Returns:
- true if the label exists in the path
-
objects
List<Object> objects()
An ordered list of the objects in the path.- Returns:
- the objects of the path
-
labels
List<Set<String>> labels()
An ordered list of the labels associated with the path The set of labels for a particular step are ordered by the order in whichextend(Object, Set)was called.- Returns:
- the labels of the path
-
clone
Path clone()
-
isSimple
default boolean isSimple()
Determines whether the path is a simple or not. A simple path has no cycles and thus, no repeated objects.- Returns:
- Whether the path is simple or not
-
forEach
default void forEach(BiConsumer<Object,Set<String>> consumer)
-
subPath
default Path subPath(String fromLabel, String toLabel)
Isolate a sub-path from the path object. The isolation is based solely on the path labels. The to-label is inclusive. Thus, from "b" to "c" would isolate the example path as followsa,[b,c],d. Note that if there are multiple path segments with the same label, then its the last occurrence that is isolated. For instance, from "b" to "c" would bea,b,[b,c,d,c].- Parameters:
fromLabel- The label to start recording the sub-path from.toLabel- The label to end recording the sub-path to.- Returns:
- the isolated sub-path.
-
-