动态边需要 Java Graph 帮助

标签 java arraylist graph

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

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/

相关文章:

java - 删除 JTable 中选定的列表元素

java - 如何计算 Java 中的 HashMap 内存使用量?

Java编译错误: List<Integer> cannot be converted to ArrayList<Integer>

java - 如何在 Arraylist 中声明 String[]?

java - 任何用于图中子图(路径)匹配的库或建议的解决方案?

java - 这看起来像是查找图中没有出边的顶点的有效方法(JGraphT)吗?

javascript - 在Sigma.js中加载JSON文件但无法绑定(bind)overEdge事件

Java 如何禁用 JTable 单击时可编辑

java - 检查数组列表中先前的输入

java - 写入文件问题