嗨,我正在创建一个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()
并直接获得索引。