gpt4 book ai didi

java - java中的迭代

转载 作者:搜寻专家 更新时间:2023-11-01 02:13:29 25 4
gpt4 key购买 nike

我必须制作一个自定义迭代器,无限迭代数组。考虑到我以前从未在 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();
}
}
}
}

最佳答案

见下文:

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

然后你可以这样做:

Numbers n = new Numbers(new int[]{1,2,3});
for (int i : n)
System.out.println(i); // or anything else

这将导致无限循环:

1
2
3
1
2
3
1
2
...

相关javadocs:
- Iterator
- Iterable


另一种方法是使用一个无限的 while 循环:

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

关于java - java中的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com