每个Java,但多个迭代器类型?

Eng*_*eer 5 java iteration foreach iterator

我有一个类Polygon,我希望实现两个迭代器:一个用于遍历所有元素(交替顺序的顶点和边)只是ONCE,另一个用于无限循环(循环).

从for-each使用的角度来看,我的猜测是我只能通过实现来使上面的一个是可以与for-each一起使用的默认迭代器Iterable.iterator().它是否正确?或者有没有一种方法可以用于 - 两者兼而有之?

GHa*_*Had 11

只需添加两个返回两个不同迭代器的方法,每个迭代器一个:

public Iterable<String> eachOnce() {
    List<String> allResults = new ArrayList<String>();
    // fill list
    return allResults;
}

public Iterable<String> eachCyclic() {
    return new Iterable<String>() {

        public Iterator<String> iterator() {
            return new Iterator<String>() {

                public boolean hasNext() {
                    return true;
                }

                public String next() {
                    // TODO implement
                    return null;
                }

                public void remove() {
                    // do nothing
                }
            };

        }
    };
}
Run Code Online (Sandbox Code Playgroud)

这只是一个字符串列表的例子,只是适应.

代替

for (Polygon p : polygons) { }
Run Code Online (Sandbox Code Playgroud)

只是用

for (Polygon p : polygons.eachOnce()) { }
Run Code Online (Sandbox Code Playgroud)

或循环版