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

Java双向链表迭代器查找元素异常:匹配元素仍提示未找到

双向链表contains方法问题排查与修复

你的代码核心问题是循环逻辑错误,导致仅检查第一个元素就直接终止判断,具体问题点:

  • 在while (iter.hasNext())循环中,只要第一个元素不等于目标值,就会进入else分支执行return false,直接结束方法,完全没有遍历链表的后续元素。
  • 额外问题:modChange++属于结构修改标记,contains是查询操作,不应该修改这个值,属于冗余错误代码。

修正后的代码

public boolean contains(T target) {
    if (isEmpty())
        return false;
        
    ListIterator iter = new ListIterator();
    
    while (iter.hasNext()) {
        if (iter.next().equals(target)) {
            System.out.println("target found!");
            return true;
        }
        // 未匹配到目标时,继续遍历下一个元素
    }  
    
    // 遍历完所有元素仍未找到目标,才执行此处
    System.out.println("target not found!");
    return false;
}

关键修正说明

  1. 移除循环内的else分支:避免提前终止遍历,确保链表所有元素都被检查
  2. 调整未找到的逻辑位置:仅当整个链表遍历完成且无匹配元素时,才输出未找到并返回false
  3. 删除冗余的modChange++:查询操作不会改变链表结构,无需修改结构修改计数器

内容的提问来源于stack exchange,提问作者ivanka georgieva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:52:08