【发布时间】:2015-01-27 15:43:02
【问题描述】:
实现跳转迭代器的next()和hasNext(),构造函数与另一个迭代器一起传递。 next() 函数将返回 iterator.next().next()
我已经实现了下面的代码,它看起来一点也不优雅。 而对于列表 {1, 9, 8, 7, 8, 2, 5},它只会输出 9, 7, 2。 有什么更好的方法吗?
基本上这个跳转迭代器是试图迭代每个元素一个距离,例如对于1,2,3,4,5,它会返回1,3,5
public class JumpIterator implements Iterator<Integer> {
private Iterator<Integer> it;
public JumpIterator(List<Integer> list){
it = list.iterator();
}
@Override
public boolean hasNext() {
if(!it.hasNext()){
return false;
}else{
it.next();
return it.hasNext();
}
}
@Override
public Integer next() {
return it.next();
}
}
【问题讨论】:
-
如果
JumpIterator的目的是在每个next()中“跳过一个并取一个”,那么您的结果现在是 100% 合规的。看来您还希望第一个值不被跳过!