千星流 2020-11-16 18:35 采纳率: 33.3%
浏览 48
已采纳

AbstractList源码中lastRet = cursor = i是什么意思

 public E previous() {
            checkForComodification();
            try {
                int i = cursor - 1;
                E previous = get(i);
                // ?????????
                lastRet = cursor = i;
                return previous;
            } catch (IndexOutOfBoundsException e) {
                checkForComodification();
                throw new NoSuchElementException();
            }
        }

 

  • 写回答

1条回答 默认 最新

  • 农夫丶果园 2020-11-17 09:35
    关注

    代码意思很简单 , 其实就是两句作为一句写 lastRet = i; cursor = i; 

    至于为什么要这么写 , 首先这是 ListItr 的方法 , ListItr不仅仅有next() 方法还有 previous() 方法 , 表示 ListItr既可以从前到后迭代 , 又可以从后往前迭代 ;

    对于从前到后迭代(next)来说 , lastRet 表示上一次返回的元素在什么位置 , cursor表示下一个将要访问的元素在什么位置

    对于从后到前迭代(previous)来说 , lastRet意义不变 , cursor 表示将要访问第几个元素(从前到后数) , 这第几个元素的位置自然是(cursor - 1)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。