使用java创建邻接列表时出现异常异常

时间:2017-09-23 18:06:28

标签: java list graph

这里有什么问题? 我正在尝试使用类似列表,链表的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();
    }
}

1 个答案:

答案 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");
        }
    }
}