实现适当邻接列表以表示图形的最佳实践

时间:2015-11-15 15:15:33

标签: java graph

我想实现一个图表类。我决定使用邻接映射来表示图形,如下所示:

// Option 1:

HashMap<Node<T>, List<Edge<T>>> adjacencyMap;    // not so good.

现在我的问题是关于这种结构的最佳实践。使用Node类作为此映射中的键不是一个坏主意吗?我甚至无法对adjacencyMap进行解析,因为标识值是顶点,即节点类的一个字段。

public class Node<T> {

    private T vertex;
}

否则,如果我映射节点的显式顶点(特定值),我将顶点(值)连接到节点列表(包含该顶点的类)。这是一个好主意还是我遇到了问题?

// Option 2:

HashMap<<T>, List<Edge<T>>> adjacencyMap;    // better 

为了完整起见,以下是其他类:

public class Graph<T> {

    private HashMap<Node<T>, List<Edge<T>>> adjacencyMap;
}

public class Edge<T> {

    private Node<T> nodeX;
    private Node<T> nodeY;
    private double weight;
}

一个明显的设计选择是将边缘列表放入节点类中,并将我的顶点映射到节点类,但我发现它是一个奇怪的结构来维护节点中的边。

有人可以提供有关此问题的任何最佳做法吗?

0 个答案:

没有答案