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

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)

    打赏 评论

相关推荐 更多相似问题