Class NeighborCache<V,​E>

  • Type Parameters:
    V - the vertex type
    E - the edge type
    All Implemented Interfaces:
    EventListener, GraphListener<V,​E>, VertexSetListener<V>

    public class NeighborCache<V,​E>
    extends Object
    implements GraphListener<V,​E>
    Maintains a cache of each vertex's neighbors. While lists of neighbors can be obtained from Graphs, they are re-calculated at each invocation by walking a vertex's incident edges, which becomes inordinately expensive when performed often.

    The cache also keeps track of successors and predecessors for each vertex. This means that the result of the union of calling predecessorsOf(v) and successorsOf(v) is equal to the result of calling neighborsOf(v) for a given vertex v.

    Author:
    Szabolcs Besenyei
    • Constructor Detail

      • NeighborCache

        public NeighborCache​(Graph<V,​E> graph)
        Constructor
        Parameters:
        graph - the input graph
        Throws:
        NullPointerException - if the input graph is null
    • Method Detail

      • predecessorsOf

        public Set<V> predecessorsOf​(V v)
        Returns the unique predecessors of the given vertex if it exists in the cache, otherwise it is initialized.
        Parameters:
        v - the given vertex
        Returns:
        the unique predecessors of the given vertex
      • successorsOf

        public Set<V> successorsOf​(V v)
        Returns the unique successors of the given vertex if it exists in the cache, otherwise it is initialized.
        Parameters:
        v - the given vertex
        Returns:
        the unique successors of the given vertex
      • neighborsOf

        public Set<V> neighborsOf​(V v)
        Returns the unique neighbors of the given vertex if it exists in the cache, otherwise it is initialized.
        Parameters:
        v - the given vertex
        Returns:
        the unique neighbors of the given vertex
      • neighborListOf

        public List<V> neighborListOf​(V v)
        Returns a list of vertices which are adjacent to a specified vertex. If the graph is a multigraph, vertices may appear more than once in the returned list. Because a list of neighbors can not be efficiently maintained, it is reconstructed on every invocation, by duplicating entries in the neighbor set. It is thus more efficient to use neighborsOf(V) unless duplicate neighbors are important.
        Parameters:
        v - the vertex whose neighbors are desired
        Returns:
        all neighbors of the specified vertex