2013-11-02 31 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-simultaneously –

回答

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

嘗試使用正常的循環,而不是的foreach

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

我會建議,而不是依賴於迭代成功地留在同步,以使用包含兩個點的單個Line類。對於每個開始點和結束點構造您的Line對象並將其插入到數組列表中。

爲了把他們救出來只是想迭代如下:

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

不能使用循環您擁有「的foreach」同時兩者都做。

如果您確定的名單都是相同的大小,然後使用循環:

 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

由於您的數據(的startPoint和終點)有關 - 把它們放在另一個類(比如MyVector),將有中startPoint和endPoint成員(類型爲Point)。具有這樣的結構可以遍歷MyVector對象的列表。