Interface PredecessorsFunction<N>
- Type Parameters:
N- Node parameter type
- All Known Subinterfaces:
com.google.common.graph.ArchetypeGraph<N>, com.google.common.graph.BaseGraph<N>, Graph<N>, MutableGraph<N>, MutableNetwork<N,E>, MutableValueGraph<N, V>, Network<N, E>, ValueGraph<N, V>
- All Known Implementing Classes:
AbstractGraph, AbstractNetwork, AbstractValueGraph, ImmutableGraph, ImmutableNetwork, ImmutableValueGraph
This interface is meant to be used as the type of a parameter to graph algorithms (such as topological sort) that only need a way of accessing the predecessors of a node in a graph.
Usage
Given an algorithm, for example:public <N> someGraphAlgorithm(N startNode, PredecessorsFunction<N> predecessorsFunction);
If you have an instance of one of the primary common.graph types (Graph,
ValueGraph, and Network):
someGraphAlgorithm(startNode, graph);
PredecessorsFunction. It will also work
with any other implementation of this interface.
If you have your own graph implementation based around a custom node type MyNode,
which has a method getParents() that retrieves its predecessors in a graph:
someGraphAlgorithm(startNode, MyNode::getParents);
If you have some other mechanism for returning the predecessors of a node, or one that doesn't
return a Iterable<? extends N>, then you can use a lambda to perform a more general
transformation:
someGraphAlgorithm(startNode, node -> ImmutableList.of(node.mother(), node.father()));
Graph algorithms that need additional capabilities (accessing both predecessors and
successors, iterating over the edges, etc.) should declare their input to be of a type that
provides those capabilities, such as Graph, ValueGraph, or Network.
Additional documentation
See the Guava User Guide for the common.graph package ("Graphs Explained") for
additional documentation, including notes for
implementors
- Since:
- 23.0
- Author:
- Joshua O'Madadhain, Jens Nyman
-
Method Summary
Modifier and TypeMethodDescriptionpredecessors(N node) Returns all nodes in this graph adjacent tonodewhich can be reached by traversingnode's incoming edges against the direction (if any) of the edge.
-
Method Details
-
predecessors
Returns all nodes in this graph adjacent tonodewhich can be reached by traversingnode's incoming edges against the direction (if any) of the edge.Some algorithms that operate on a
PredecessorsFunctionmay produce undesired results if the returnedIterablecontains duplicate elements. Implementations of such algorithms should document their behavior in the presence of duplicates.The elements of the returned
Iterablemust each be:- Non-null
- Usable as
Mapkeys (see the Guava User Guide's section on graph elements for details)
- Throws:
IllegalArgumentException- ifnodeis not an element of this graph
-