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; }
关键修正说明
- 移除循环内的else分支:避免提前终止遍历,确保链表所有元素都被检查
- 调整未找到的逻辑位置:仅当整个链表遍历完成且无匹配元素时,才输出未找到并返回false
- 删除冗余的
modChange++:查询操作不会改变链表结构,无需修改结构修改计数器
内容的提问来源于stack exchange,提问作者ivanka georgieva
相关产品推荐
相关产品推荐

