You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现EvenIterator获取字符串集合偶数索引元素报错如何解决

错误原因
  • 语法错误:value是String类型,Java不支持字符串与整数做模运算,因此触发参数类型不匹配的编译报错
  • 逻辑错误:你的需求是筛选偶数索引位置的元素,而非筛选值为偶数的元素,现有判断逻辑不符合需求
修复原有实现的方案

只需要修改createEvenListIterator方法,新增索引计数器来判断位置即可:

private void createEvenListIterator() {
  LinkedList<String> list = new LinkedList<>();
  int index = 0; // 新增索引计数器,从0开始计数
  while(iter.hasNext()) {
    String value = iter.next();
    if(index % 2 == 0) { // 判断索引是否为偶数,而非判断元素值
      list.add(value);
    }
    index++;
  }
  iter = list.iterator();
}

注意需要提前导入依赖类:java.util.LinkedList、java.util.Iterator、java.util.NoSuchElementException。

更优的懒加载实现方案(推荐)

原有实现需要提前遍历整个集合、缓存所有符合条件的元素,大集合场景下会额外占用内存。你可以改用懒迭代的实现方式,遍历时实时判断索引,无需提前加载全量数据:

import java.util.Iterator;
import java.util.NoSuchElementException;

public class EvenIterator implements Iterator<String> {
    private final Iterator<String> originalIter;
    private int currentIndex = 0;
    private String nextEvenElement;

    public EvenIterator(Iterable<String> iterable) {
        this.originalIter = iterable.iterator();
        prefetchNextEven();
    }

    // 预取下一个偶数索引的元素
    private void prefetchNextEven() {
        nextEvenElement = null;
        while (originalIter.hasNext()) {
            String current = originalIter.next();
            if (currentIndex % 2 == 0) {
                nextEvenElement = current;
                currentIndex++;
                break;
            }
            currentIndex++;
        }
    }

    @Override
    public boolean hasNext() {
        return nextEvenElement != null;
    }

    @Override
    public String next() {
        if (nextEvenElement == null) {
            throw new NoSuchElementException();
        }
        String result = nextEvenElement;
        prefetchNextEven();
        return result;
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException();
    }
}
补充说明

如果你的业务中索引是从1开始计数,需要取第2、4、6位的元素,只需要把索引判断条件改为index % 2 == 1即可。

内容的提问来源于stack exchange,提问作者Carlo Viloria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:09:04