gpt4 book ai didi

java - 添加到列表矩阵中的指定列表

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:33 27 4
gpt4 key购买 nike

这是我正在为算法类(class)编写的作业程序。任务是使用列表矩阵(这是 Java 顺便说一句)模拟图的邻接矩阵。矩阵的元素被解释为第一个节点。它在图中连接到的任何节点都将添加到该矩阵元素的列表中。我已按如下方式构造了矩阵:

List<Node>[] weightedList = new List[size]

我了解到对象列表和类型检查存在问题。然后,我调用方法 initializeList() 来构造初始结构。

protected void initializeList() {
List<Node> list = new ArrayList<Node>();
for (int i = 1; i < Tester.size; i++){
weightedList[i] = list;
}
}

当我处理输入数据时,我需要根据给定的节点值“构建”图表。我的问题就在这里,当我调用 addEdge() (实际上,连接两个节点创建一条边)时,我尝试添加的节点被添加到矩阵的每个元素中。方法如下:

public static void putEdge(Edge e) {
Node node1 = e.getVertex1();
Node node2 = e.getVertex2();
int dim1 = node1.getNode();
if (dim1 < Tester.size){
weightedList[dim1].add(node2);
}
}

我的问题是否与对象列表中固有的类型检查问题或其他问题有关?请指教。

-- JQK

最佳答案

您将相同的列表实例分配给数组的所有索引。

您应该在循环内实例化每个列表:

protected void initializeList() {
for (int i = 0; i < Tester.size; i++){
List<Node> list = new ArrayList<Node>();
weightedList[i] = list;
}
}

这样,数组中的每个索引都将包含不同的 ArrayList 实例。

您可能应该从 0 开始迭代,因为这是数组的第一个索引。

关于java - 添加到列表矩阵中的指定列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com