2013-11-02 3 views
0

Это то, что я хочу добиться:Как я повторяю эти списки одновременно?

public ArrayList<Point> startPoints = new ArrayList<Point>(); 
    public ArrayList<Point> endPoints = new ArrayList<Point>(); 

      for (Point startPoint : startPoints) { // <-- How do I do I do 2 at the same time? 
       g.fillOval(startPoint .x, startPoint.y, 10, 10); 
       g.drawLine(startPoint .x, startPoint.y, endPoint.x, endPoint.y); 
      } 
+2

Проверьте это: http://stackoverflow.com/questions/15985266/how-to-iterate-through-two-arraylists- одновременно –

ответ

4

использовать «нормальный» for с индексом i.

// if list1 and list2 have the same length 
for(int i = 0;i<list1.size();i++){ 
    list1.get(i); // do something with that 
    list2.get(i); // do something else with that 
} 
0

Попробуйте использовать нормальный цикл вместо Еогеасп

0

Если вы не в состоянии изменить структуры данных:

for (int i = 0; i < startPoints.size() && i < endPoints.size(); i++) { 
    Point startPoint = startPoints.get(i); 
    Point endPoint = endPoints.get(i); 
    g.fillOval(startPoint.x, startPoint.y, 10, 10); 
    g.drawLine(startPoint.x, startPoint.y, endPoint.x, endPoint.y); 

} 
0

Я рекомендовал бы, вместо того, чтобы полагаться на итерации, чтобы успешно оставаться в synch, чтобы использовать один класс Line, который содержит две точки. Для каждой начальной и конечной точки создайте объект Line и вставьте его в arraylist.

Чтобы получить их просто итерацию следующим образом:

for (Line line : lines) { // <-- How do I do I do 2 at the same time? 
    g.fillOval(line.getStartPoint().x, line.getStartPoint().y, 10, 10); 
    g.drawLine(line.getStartPoint().x, line.getStartPoint().y, line.getEndPoint().x, line.getEndPoint.y); 
} 
0

Вы не можете делать и в то же время с помощью «Еогеасп» для цикла у вас есть.

Если вы уверены, что списки оба тот же размер, а затем использовать цикл:

 for (int i = 0; i < startPoints.size(); i++) { // <-- How do I do I do 2 at the same time? 
      Point startPoint = startPoints.get(i); 
      Point endPoint = endPoints.get(i); 
      g.fillOval(startPoint .x, startPoint.y, 10, 10); 
      g.drawLine(startPoint .x, startPoint.y, endPoint.x, endPoint.y); 
     } 
0

Поскольку ваши данные (начальный и конечные точки) связаны - поместить их в другом классе (скажет MyVector), который будет иметь startPoint и endPoint (типа Point). Имея такую ​​структуру, вы перебираете список объектов MyVector.

Смежные вопросы