Class ConfigurableValueGraph<N,​V>

  • Type Parameters:
    N - Node parameter type
    V - Value parameter type
    All Implemented Interfaces:
    Graph<N>, ValueGraph<N,​V>
    Direct Known Subclasses:
    ConfigurableMutableValueGraph

    class ConfigurableValueGraph<N,​V>
    extends AbstractValueGraph<N,​V>
    Configurable implementation of ValueGraph that supports the options supplied by AbstractGraphBuilder.

    This class maintains a map of nodes to GraphConnections.

    Collection-returning accessors return unmodifiable views: the view returned will reflect changes to the graph (if the graph is mutable) but may not be modified by the user.

    The time complexity of all collection-returning accessors is O(1), since views are returned.

    • Field Detail

      • isDirected

        private final boolean isDirected
      • allowsSelfLoops

        private final boolean allowsSelfLoops
      • edgeCount

        protected long edgeCount
    • Constructor Detail

      • ConfigurableValueGraph

        ConfigurableValueGraph​(AbstractGraphBuilder<? super N> builder)
        Constructs a graph with the properties specified in builder.
      • ConfigurableValueGraph

        ConfigurableValueGraph​(AbstractGraphBuilder<? super N> builder,
                               java.util.Map<N,​GraphConnections<N,​V>> nodeConnections,
                               long edgeCount)
        Constructs a graph with the properties specified in builder, initialized with the given node map.
    • Method Detail

      • nodes

        public java.util.Set<N> nodes()
        Description copied from interface: Graph
        Returns all nodes in this graph, in the order specified by Graph.nodeOrder().
      • isDirected

        public boolean isDirected()
        Description copied from interface: Graph
        Returns true if the edges in this graph are directed. Directed edges connect a source node to a target node, while undirected edges connect a pair of nodes to each other.
      • allowsSelfLoops

        public boolean allowsSelfLoops()
        Description copied from interface: Graph
        Returns true if this graph allows self-loops (edges that connect a node to itself). Attempting to add a self-loop to a graph that does not allow them will throw an UnsupportedOperationException.
      • nodeOrder

        public ElementOrder<N> nodeOrder()
        Description copied from interface: Graph
        Returns the order of iteration for the elements of Graph.nodes().
      • adjacentNodes

        public java.util.Set<N> adjacentNodes​(java.lang.Object node)
        Description copied from interface: Graph
        Returns the nodes which have an incident edge in common with node in this graph.
      • predecessors

        public java.util.Set<N> predecessors​(java.lang.Object node)
        Description copied from interface: Graph
        Returns all nodes in this graph adjacent to node which can be reached by traversing node's incoming edges against the direction (if any) of the edge.

        In an undirected graph, this is equivalent to Graph.adjacentNodes(Object).

      • successors

        public java.util.Set<N> successors​(java.lang.Object node)
        Description copied from interface: Graph
        Returns all nodes in this graph adjacent to node which can be reached by traversing node's outgoing edges in the direction (if any) of the edge.

        In an undirected graph, this is equivalent to Graph.adjacentNodes(Object).

        This is not the same as "all nodes reachable from node by following outgoing edges". For that functionality, see Graphs.reachableNodes(Graph, Object).

      • edgeValueOrDefault

        public V edgeValueOrDefault​(java.lang.Object nodeU,
                                    java.lang.Object nodeV,
                                    @Nullable
                                    V defaultValue)
        Description copied from interface: ValueGraph
        If there is an edge connecting nodeU to nodeV, returns the non-null value associated with that edge; otherwise, returns defaultValue.

        In an undirected graph, this is equal to edgeValueOrDefault(nodeV, nodeU, defaultValue).

      • edgeCount

        protected long edgeCount()
        Description copied from class: AbstractGraph
        Returns the number of edges in this graph; used to calculate the size of AbstractGraph.edges(). The default implementation is O(|N|). You can manually keep track of the number of edges and override this method for better performance.
        Overrides:
        edgeCount in class AbstractGraph<N>
      • checkedConnections

        protected final GraphConnections<N,​V> checkedConnections​(java.lang.Object node)
      • containsNode

        protected final boolean containsNode​(@Nullable
                                             java.lang.Object node)