我想实现一个图表类。我决定使用邻接映射来表示图形,如下所示:
// 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;
}
一个明显的设计选择是将边缘列表放入节点类中,并将我的顶点映射到节点类,但我发现它是一个奇怪的结构来维护节点中的边。
有人可以提供有关此问题的任何最佳做法吗?