比较java中的顶点对

时间:2016-04-21 07:02:07

标签: java arrays arraylist graph

我想遍历给定顶点集中的所有顶点,并比较两对之间的距离。假设我的顶点列表如下:

(1,2),(3,4),(5,6),(7,8),(9,10),(11,12)

我想以下列方式遍历顶点集:

第一次迭代:

for pair (1,2) and (3,4) I want to compare it with [(5,6),(7,8)],[(7,8),  (9,10)]and[(9,10),(11,12)]

第二次迭代:

for pair (3,4) and (5,6) I want to compare it with [(7,8),(9,10)]and[(9,10),(11,12)]

第3次迭代:

for pair (7,8) and (9,10) I want to compare it with [(9,10),(11,12)]

我将如何在java中使用嵌套循环?我想将这组顶点存储在一个arraylist中。我尝试过以下方式,但获得例外:

 for(i=0;i<arraylist.size();i++)
 {
     for(j=i+2;j<arraylist.size();j++
      {
           //x,y,u,v are objects of the vertex class
             x=arraylist.get(i);
             y=arraylist.get(i+1);
             u=arraylist.get(j);
             v=arraylist.get(j+1);

       }
  }

我需要在上面的代码片段中进行哪些额外的更改来遍历顶点集,如上所述?

1 个答案:

答案 0 :(得分:3)

您收到IndexOutOfBoundsException个异常,因为您尝试使用索引不在列表中的get()项(请参阅Arraylist.get()

 j<arraylist.size()

 v=arraylist.get(j+1);  <- (j+1) can become arraylist.size().

所以你应该把你的循环限制为:

  j<arraylist.size()-1