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

Java中如何为自定义LinkedList实现lastIndexOf(E e)方法

问题原因分析

你的现有代码存在两个核心问题:

  • 相等判断逻辑错误:e.equals(current)是把传入的元素和Node节点对象本身做对比,永远不会匹配成功,需要取节点中存储的元素值current.item做比较
  • 缺少节点指针移动逻辑:循环内没有向前移动current指针,会导致永远重复比对尾节点,进入死循环或者提前返回错误结果
    另外还要补充null值判断逻辑,避免传入的元素e为null时抛出空指针异常。

完整实现代码

public int lastIndexOf(E e) {
    // 链表为空直接返回-1
    if (size == 0) {
        return -1;
    }
    Node<E> current = tail;
    // e为null的情况单独处理,避免空指针
    if (e == null) {
        for (int i = size - 1; i >= 0; i--) {
            if (current.item == null) {
                return i;
            }
            current = current.prev;
        }
    } else {
        for (int i = size - 1; i >= 0; i--) {
            if (e.equals(current.item)) {
                return i;
            }
            current = current.prev;
        }
    }
    // 未找到匹配元素返回-1
    return -1;
}

实现说明

  • 遍历方向:从尾节点tail开始,每次通过current = current.prev移动到前一个节点,符合从后向前查找的要求
  • 空值兼容:单独处理e为null的场景,避免调用equals方法抛出空指针
  • 边界处理:提前判断链表为空的情况,直接返回-1避免无意义遍历

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:36:04