我正在编写一个代码,想要在某个索引处结束我的迭代器,我无法弄明白。这是我的代码,但不起作用。
for(int i = 0; i< stop && iterator.hasNext(); i++){
iterator.next();
if(i == stop){
break;
}
return iterator;
}
return iterator;
答案 0 :(得分:1)
只需从循环内部删除return iterator,您的代码就可以正常工作。现在,它是从你的函数返回循环的第一次迭代本身,即当i = 0时。
答案 1 :(得分:0)
如果我们查看您的代码,有几点需要注意。首先,它总是以i == 0返回。
如果我&gt;你第一次通过循环0然后它有下一个,你抓住下一个并返回迭代器。否则循环不会运行并返回迭代器。作为一个注释,if永远不会是真的,因为在这种情况下你不会运行循环。
所写的代码相当于:
if ((i < stop) && iterator.hasNext()) {
iterator.next();
}
return iterator;
答案 2 :(得分:0)
当你到达你想要的位置时,你只需要休息。
public static void main(String[] args) {
List<String> xs = Arrays.asList("A","B","C","D","E","F");
Iterator<String> iter = xs.iterator();
offsetIter(iter,3);
while (iter.hasNext()) {
String string = (String) iter.next();
System.out.print(" ");
System.out.print(string);
}
}
public static <T> void offsetIter(Iterator<T> iter , int moveAt){
int i = 0;
while (iter.hasNext()) {
if(i<moveAt){
iter.next();
i++;
} else {
break;
}
}
return;
}
将导致:
D E F
不需要返回迭代器,因为迭代器原则上是可变的。