我目前正在编写一个代码,该代码将向边添加邻居。但是由于项目的性质,我不知道一个边缘将会有多少邻居。例如
verti.vertices[34].adjacencies = new Edge[2];
verti.vertices[41].adjacencies = new Edge[4];

正如您在new Edge [2]
和new Edge [4]
中看到的那样,我宣布边缘将具有的邻居数量,但是在我的代码中稍后当程序添加邻居时它可能会添加少于最初声明的邻居,这会导致
显示java.lang.NullPointerException
我是否有动态范围处理此问题(类似于Arraylist)?
答案 0 :(得分:0)
正如您所知,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
}
}