如何同时迭代这些列表?

时间:2013-11-02 18:43:15

标签: java arrays list

这就是我想要实现的目标:

    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);
            }

6 个答案:

答案 0 :(得分:4)

使用&#34;正常&#34; 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
}

答案 1 :(得分:0)

尝试使用普通for循环而不是foreach

答案 2 :(得分: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);

}

答案 3 :(得分:0)

我建议使用包含两个点的单个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);
}

答案 4 :(得分:0)

你不能同时使用&#39; foreach&#39;你有循环。

如果您确定列表的大小相同,请使用循环:

        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);
        }

答案 5 :(得分:0)

由于您的数据(startPoint和endPoint)是相关的 - 将它们放在另一个具有startPoint和endPoint成员(类型为Point)的类(比如MyVector)中。拥有这样的结构,您可以遍历MyVector对象列表。