在某个索引处结束迭代器

时间:2017-04-05 14:17:45

标签: java iterator

我正在编写一个代码,想要在某个索引处结束我的迭代器,我无法弄明白。这是我的代码,但不起作用。

    for(int i = 0; i< stop && iterator.hasNext(); i++){ 
        iterator.next();
        if(i == stop){ 
            break; 
        }
        return iterator;
    }
    return iterator;

3 个答案:

答案 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

不需要返回迭代器,因为迭代器原则上是可变的。

相关问题