Interface PredecessorsFunction<N>
- 
- Type Parameters:
- N- Node parameter type
 - All Known Subinterfaces:
- 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
 
 @Beta @DoNotMock("Implement with a lambda, or use GraphBuilder to build a Graph with the desired edges") public interface PredecessorsFunction<N> A functional interface for graph-structured data.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. UsageGiven an algorithm, for example:
 you will invoke it depending on the graph representation you're using.public <N> someGraphAlgorithm(N startNode, PredecessorsFunction<N> predecessorsFunction);If you have an instance of one of the primary common.graphtypes (Graph,ValueGraph, andNetwork):
 This works because those types each implementsomeGraphAlgorithm(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 methodgetParents()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, orNetwork.Additional documentationSee the Guava User Guide for the common.graphpackage ("Graphs Explained") for additional documentation, including notes for implementors- Since:
- 23.0
- Author:
- Joshua O'Madadhain, Jens Nyman
 
- 
- 
Method SummaryAll Methods Instance Methods Abstract Methods Modifier and Type Method Description Iterable<? extends N>predecessors(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 Detail- 
predecessorsIterable<? extends N> predecessors(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.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- if- nodeis not an element of this graph
 
 
- 
 
-