迭代器接受字符串,但我需要在偶数索引获得元素?



嗨,我正在创建一个EvenIterator,它返回偶数索引的元素,如:

public class EvenIterator implements java.util.Iterator<String> {

private Iterator<String> iter;
public EvenIterator(Iterable<String> iter) {
this.iter = iter.iterator();
createEvenListIterator();
}
private void createEvenListIterator() {

LinkedList<String> list = new LinkedList<String>();
while(iter.hasNext()) {
String value = iter.next();
if(value%2 == 0) {
list.add(value);
}
}

iter = list.iterator();
}
public boolean hasNext() {
return iter.hasNext();
}
public String next() {
if(iter.hasNext()) {
return iter.next();
} else
throw new NoSuchElementException();
}
public void remove() {
throw new UnsupportedOperationException();
}
}

和我得到一个错误在if(value%2 == 0)(参数类型错误),有任何方法来修复这个或解决这个?谢谢。

if(value%2 == 0)正在检查一个值是否为偶数,但您需要检查的是该值的索引是否为偶数。有几种方法可以做到这一点,其中一种方法是在循环中添加自己的计数器。

private void createEvenListIterator() {

LinkedList<String> list = new LinkedList<String>();
int count = 0;
while(iter.hasNext()) {
String value = iter.next();
if(count % 2 == 0) {
list.add(value);
}
count++;
}

iter = list.iterator();
}

另一种方法,如果您能够切换到使用ListIterator,则在iter.next()之前调用nextIndex()并直接获得索引。

最新更新