Interface IndexGraphFactory

    • Method Detail

      • newGraph

        IndexGraph newGraph()
        Create a new empty index graph.
        Returns:
        a new index graph with the factory options
      • newCopyOf

        default IndexGraph newCopyOf​(IndexGraph g)
        Create a copy of a given index graph, with the same vertices and edges, without copying weights.

        An identical copy of the given graph will be created, with the same vertices and edges, without copying the vertices/edges weights. The returned Graph will always be modifiable, with no side affects on the original graph.

        Differing from IndexGraph.copy(), the capabilities of the new graph are determined by the factory configuration, rather than copied from the given graph. Note for example that if the factory chooses to use an implementation that does not (have to) support self edges (if allowSelfEdges(boolean) was not called with true), attempting to create a copy of a graph that does contains self edges will result in an exception.

        Parameters:
        g - the original graph to copy
        Returns:
        an identical copy of the given graph, with the same vertices and edges, without the original graph weights
      • newCopyOf

        IndexGraph newCopyOf​(IndexGraph g,
                             boolean copyWeights)
        Create a copy of a given index graph, with the same vertices and edges, with/without copying weights.

        An identical copy of the given graph will be created, with the same vertices and edges, with/without copying the vertices/edges weights. The returned Graph will always be modifiable, with no side affects on the original graph.

        Differing from IndexGraph.copy(boolean), the capabilities of the new graph are determined by the factory configuration, rather than copied from the given graph. Note for example that if the factory chooses to use an implementation that does not (have to) support self edges (if allowSelfEdges(boolean) was not called with true), attempting to create a copy of a graph that does contains self edges will result in an exception.

        Parameters:
        g - the original graph to copy
        copyWeights - if true, the weights of the vertices and edges will be copied to the new graph
        Returns:
        an identical copy of the given graph, with the same vertices and edges, with/without the original graph weights
      • setDirected

        IndexGraphFactory setDirected​(boolean directed)
        Determine if graphs built by this factory should be directed or not.
        Parameters:
        directed - if true, graphs built by this factory will be directed
        Returns:
        this factory
      • allowSelfEdges

        IndexGraphFactory allowSelfEdges​(boolean selfEdges)
        Determine if graphs built by this factory should be support self edges.
        Parameters:
        selfEdges - if true, graphs built by this factory will support self edges
        Returns:
        this factory
      • allowParallelEdges

        IndexGraphFactory allowParallelEdges​(boolean parallelEdges)
        Determine if graphs built by this factory should be support parallel edges.
        Parameters:
        parallelEdges - if true, graphs built by this factory will support parallel edges
        Returns:
        this factory
      • expectedVerticesNum

        IndexGraphFactory expectedVerticesNum​(int expectedVerticesNum)
        Set the expected number of vertices that will exist in the graph.
        Parameters:
        expectedVerticesNum - the expected number of vertices in the graph
        Returns:
        this factory
      • expectedEdgesNum

        IndexGraphFactory expectedEdgesNum​(int expectedEdgesNum)
        Set the expected number of edges that will exist in the graph.
        Parameters:
        expectedEdgesNum - the expected number of edges in the graph
        Returns:
        this factory
      • addHint

        IndexGraphFactory addHint​(GraphFactory.Hint hint)
        Add a hint to this factory.

        Hints do not change the behavior of the graphs built by this factory, by may affect performance.

        Parameters:
        hint - the hint to add
        Returns:
        this factory
      • removeHint

        IndexGraphFactory removeHint​(GraphFactory.Hint hint)
        Remove a hint from this factory.

        Hints do not change the behavior of the graphs built by this factory, by may affect performance.

        Parameters:
        hint - the hint to remove
        Returns:
        this factory
      • newUndirected

        static IndexGraphFactory newUndirected()
        Create an undirected index graph factory.

        This is the recommended way to instantiate a new undirected index graph.

        Returns:
        a new factory that can build undirected index graphs
      • newDirected

        static IndexGraphFactory newDirected()
        Create a directed index graph factory.

        This is the recommended way to instantiate a new directed index graph.

        Returns:
        a new factory that can build directed index graphs
      • newFrom

        static IndexGraphFactory newFrom​(IndexGraph g)
        Create a new index graph factory based on a given implementation.

        The new factory will build graphs with the same capabilities as the given graph, possibly choosing to use a similar implementation. The factory will NOT copy the graph itself (the vertices, edges and weights), for such use case see IndexGraph.copy() or newCopyOf(IndexGraph).

        Parameters:
        g - a graph from which the factory should copy its capabilities
        Returns:
        a new graph factory that will create graphs with the same capabilities of the given graph