我必须创建一个自定义迭代器,它通过一个数组无休止地迭代.考虑到我之前从未使用过java中的迭代器,我不知道如何做到这一点.如果有人能帮我解释并向我解释,我会非常感激.
public class Numbers{
private int[] array;
public Numbers(int[] array){
this.array = array
}
public static void main(String[] args) {
Numbers n = new Numbers();
Iterator num = n.sequence();
for(int i = 0; i < 10; i++){
if (num.hasNext()){
System.out.print(num.next() + " ");
System.out.println();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
见下文:
public class Numbers implements Iterable<Integer> {
private int[] array;
private int i;
public Numbers(int[] array) {
this.array = array;
i = 0;
}
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
@Override
public boolean hasNext() { return true; }
@Override
public Integer next() {
int j = i;
i = (i + 1) % array.length;
return array[j];
}
@Override
public void remove() {}
};
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
Numbers n = new Numbers(new int[]{1,2,3});
for (int i : n)
System.out.println(i); // or anything else
Run Code Online (Sandbox Code Playgroud)
这将导致无限循环:
1
2
3
1
2
3
1
2
...
相关的javadocs:
- Iterator
- Iterable
int[] array = new int[]{1, 2, 3};
int i = 0;
while (true) {
System.out.println(array[i]); // or anything else
i = (i + 1) % array.length;
}
Run Code Online (Sandbox Code Playgroud)