有没有办法将 Java 中的列表处理为二维?
情况: 我有一个包含节点、边和每边权重的图。现在我需要一个数据结构来为每个节点存储: a) 它的邻居 b) 每个邻居的边缘权重
首先,我想创建一个新的类“节点”,它带有标识符和类似于二维数组的东西来存储邻居标识符和边权重。但是没有给出每个节点的邻居数量,并且可能会在运行时动态增加。因此我认为二维数组不是解决问题的方法。
我认为在“节点”类中可以有一个像这样的列表:
List<node> neighbours = new ArrayList<node>();
但显然这只处理邻居节点 - 而不是它们边的权重。
有没有人知道如何构建这样一个“图”,其中为每个节点存储邻居的标识符和相应的边权重?
感谢您的阅读:-)
最佳答案
最直接的方法是使用HashMap
:
class Edge {
// represents edge with destination node and it's weight
private final Node node;
private final int weight;
Edge(Node node, int weight) {
this.node = node;
this.weight = weight;
}
}
// represents map which holds all outgoing edges keyed by source nodes.
Map<Node, Set<Edges>> edgesByOutgoingNodes = new HashMap<Node, Set<Edges>>();
关于java - Java 中的二维列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12744404/