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

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 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法