这里有什么问题? 我正在尝试使用类似列表,链表的util库创建邻接列表。但在运行代码后,它正在生成
线程中的异常" main" java.lang.IndexOutOfBoundsException:Index:0,Size:0 在java.util.LinkedList.checkElementIndex(LinkedList.java:555)问题
import java.util.*;
class GraphMain{
List<Edge> G[];
public GraphMain(int n) {
G=new LinkedList[n];
for(int i=0;i<G.length;i++)
G[i]=new LinkedList<Edge>();
}
boolean isConnected(int u,int v) {
for(Edge i: G[u])
if(i.v==v) return true;
return false;
}
void addEdge(int u,int v) {
G[u].add(new Edge(v));
}
void printGraph () {
for(int i=0;i<G.length;i++)
System.out.println(i+"=>"+G[i].get(i)+"\n");
}
}
我的测试员课程是:
public class Graph {
public static void main(String[] args) {
GraphMain g=new GraphMain(10);
g.addEdge(1, 2);
g.addEdge(2, 5);
g.addEdge(2, 5);
g.addEdge(8, 3);
g.printGraph();
}
}
答案 0 :(得分:1)
您的问题很可能与此打印输出方法有关:
void printGraph ()
{
for(int i=0;i<G.length;i++)
System.out.println(i+"=>"+G[i].get(i)+"\n");
}
在此方法中,您假设G中的节点列表数与G中每个节点列表的长度相同或更小。
如果G [i]节点列表比i长度短,则get(i)将导致索引超出边界。
处理此问题的另一个打印输出选项可能是:
void printGraph ()
{
for(int i=0;i<G.length;i++) {
for (Node node: G[i]) {
System.out.println(i+"=>"+node+"\n");
}
}
}