有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的二维列表

有没有一种方法可以将Java中的列表处理为二维的

情况: 我有一个包含节点、边和每边权重的图。现在,我需要为每个节点存储一个数据结构: a) 它的邻居 b) 每个邻居的边缘重量

首先,我想创建一个新的类“node”,其中包含一个标识符和一个类似于二维数组的东西,用于存储相邻标识符和边权重。但每个节点的邻居数并没有给出,并且在运行期间可能会动态增加。因此,我认为二维数组不是解决这个问题的方法

我认为在类“节点”中可以有如下列表:

List<node> neighbours = new ArrayList<node>();

但显然,这只处理相邻节点,而不是它们边的权重

有人知道如何构造这样一个“图”,其中每个节点都存储了邻居的标识符和相应的边权重吗

感谢阅读:-)


共 (2) 个答案

  1. # 1 楼答案

    最直接的方法是使用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>>();
    
  2. # 2 楼答案

    你可以这样做:

    List<Connection> connections = new ArrayList<Connection>();
    

    其中“连接”定义为:

    Class Connection {
        private int weight;
        private Node node;
    
        .... add getters/setters here ....
    }