gpt4 book ai didi

动态边需要 Java Graph 帮助

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:04 25 4
gpt4 key购买 nike

我目前正在编写一个代码,它将向边缘添加邻居。但由于该项目的性质,我不会知道一条边将有多少个邻居。例如

verti.vertices[34].adjacencies = new Edge[2];
verti.vertices[41].adjacencies = new Edge[4];

正如您在 new Edge [2]new Edge [4] 中看到的那样,我声明了该边将拥有的邻居数量,但是稍后在我的代码中,当程序添加邻居时,它可能会添加比最初声明的邻居更少的邻居,从而导致

java.lang.NullPointerException

我是否可以通过动态范围(类似于 Arraylist)来处理这个问题?

最佳答案

正如您所知,ArrayList 是操作大小动态的对象集合的最直接的解决方案。

如果不使用它,您有两种解决方案:

从源头上解决问题,一次完成

必须在包含数组的对象中定义数组的实际大小。
与 ArrayList 内部了解当前大小的操作类似。

/**
* The size of the ArrayList (the number of elements it contains).
*
* @serial
*/
private int size;

您可以引入一个 addEdge() 方法,将 Edge 对象添加到数组中并增加数组的实际大小。

public class Foo{
public Edge[] vertices;
private int size;

public void addEdge(Edge edge){
vertices[size++] = edge;
}
}

你可以这样写:

verti.vertices[34].addEdge(new Edge(...));

每次想要访问 Edge 元素时添加一个防护

例如:

for (Edge edge : verti.vertices[34].adjacencies ){
if (edge != null){
// do something
}
}

关于动态边需要 Java Graph 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49207946/

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