Java Swing中使用索引的For循环



有人能帮我指出这两个for循环的区别吗?他们看起来可能在做同样的事情,但他们不是。

        for(int i = 0; i < shapes.size() - 1; i++) {
            Graphics2D g2d = (Graphics2D) g;
            shapes.get(i).paint(g2d);
        }

我怎么写我的第一个for循环没有I (index)?

        for(Shape shape : shapes) {
            Graphics2D g2d = (Graphics2D) g;
            shape.paint(g2d);
        }

它们看起来可能在做同样的事情,但它们不是。

第一个循环忽略集合中的最后一个形状,而第二个循环触及所有项。要解决第一个问题,去掉- 1部分。例如,更改为:

Graphics2D g2d = (Graphics2D) g;
for(int i = 0; i < shapes.size(); i++) {
    shapes.get(i).paint(g2d);
}

最新更新