逆向迭代器与for循环的问题

package base4;

import java.util.List;
import java.util.ArrayList;
import java.util.ListIterator;

public class ListDemo {
public static void main(String[] args){
ArrayList a = new ArrayList();
a.add("java01");
a.add("java02");
a.add("java03");
method("原集合:"+a);

    for(ListIterator li = a.listIterator();li.hasPrevious();){
        System.out.println(li.previous());
        }
}

}

在for循环中逆向遍历集合时,出现java.util.NoSuchElementException的错误,,,但在for循环中顺向遍历集合时,不会出现任何问题,我想知道原因,谢谢各位大神赐教,,,

 // Substitute appropriate type.
ArrayList<...> a = new ArrayList<...>();

// Add elements to list.

// Generate an iterator. Start just after the last element.
ListIterator li = a.listIterator(a.size());

// Iterate in reverse.
while(li.hasPrevious()) {
  System.out.println(li.previous());
}

你并没有告诉它从java03开始遍历,它会默认从java01开始,而java01之前本来就没有元素了啊,所以报java.util.NoSuchElementException。