关于listIterator.hasPrevious()为什么跳过执行的解释

今天在学习列表迭代器的时候,讲hasNext这一段注释,则hasPrevious的while循环直接跳出,如果没有注释hasNext这一段则正常运行。

List list = new ArrayList();
        list.add("hello");
        list.add("world");
        list.add("java");

        ListIterator lt = list.listIterator();
        /*
        while (lt.hasNext()){
            String s = lt.next();
            System.out.println(s);
        }

         */
        while (lt.hasPrevious()){
            String s = lt.previous();
            System.out.println(s);
        }

原因:类似于索引,一开始没有注释的时候lt已经指向了List最后一个元素,然后调用hasPrevoius方法从后向前执行,如果只有单独的hasPrevious,则没有元素可以再输出,则退出while循环。
解决办法:

ListIterator lt = list.listIterator(list.size());

你可能感兴趣的:(iteratorjava)