还记得刚才我们传入的游标吗 ,调用之前 他已经把游标的值传入0了 所以这个cursor 必定为0 size()暂时不做介绍了 楼主只要知道他这里的size方法必定返回调用的集合的size就可以了 。所以现在断定0!=4 对吧 。自然会返回false ,也就是说 这个集合中还有值
所以接下来调用li.next()方法
next方法做重点介绍
public E next() {
checkForComodification();
try {
E next = get(cursor);
lastRet = cursor++;
return next;
} catch (IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}
进入next以后 首先会执行checkForComodification方法
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
这个方法会检查是否有并发修改的情况 所以单独建立一个值
然后接着往下走cursor的值是0 代表取集合元素中第一个值
请看get方法的源码
public E get(int index) {
RangeCheck(index);