java - Java 中的二维列表

标签 java list

有没有办法将 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/

相关文章:

list - 有没有办法使用 write/1 来编写 length/1 谓词来打印结果?

mysql:如果数字在列表字段中则选择行(即 userIDs = "1,2,3",从表中选择 *,其中 userIDs 为 1)

java - 共享使用的静态方法与实例方法

java - 如何更改tomcat jmx密码的文件权限

java - session 回滚、撤销和死信处理程序

r - 查找每列数据集列表的唯一级别

java - 如何在不使用多行的情况下换行 edittext?

java - 按下按键后,我绘制的对象不会清除先前的矩形

list - 为什么无法使用 REST API 从 Sharepoint 2013 库文件夹中获取文件

javascript - 通过选择一个值来打印列表 - Javascript