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

Iterator takes in string but I need to get elements at even indices?

您好,我正在创建一个 EvenIterator,其中 returns 个元素位于偶数索引处,例如:

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) 正在检查一个值是否为偶数,但您需要检查该值的 index 是否为偶数。有几种方法可以做到这一点,但一种方法是在循环中添加您自己的计数器。

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() 并直接获取索引。