ListIterator逆向遍历输出问题

    科技2022-07-21  114

    在练习ListIterator逆向遍历的时候出现了一个问题

    List<String> l=new ArrayList<String>(); l.add("北京"); l.add("南京"); l.add("东京"); ListIterator<String> it= l.listIterator(); while(it.hasPrevious()){ System.out.println(it.previous()); }

    在控制台没有显示输出,这就很烦躁了,检查了也没有错误,换到eclipse上也没有输出(默默说一句,Idea真强大,才开始使用它。我就想用正向遍历试试,然后在逆向遍历的前面添加

    // while(it.hasNext()) { // System.out.println(it.next()); // }

    控制台竟然输出了两遍,一遍正向,一遍逆向(狂喜),然后我就猜会不会是因为光标的问题。 当正向遍历时光标是从前往后。初始位置也在前面。我以为,只是我以为逆向遍历的时候光标应该在后面呀。有了这个猜想,我们就去试一试。listIterator中有一个previousIndex()方法是用来获取下标的。看我像集合添加的元素中只有3个,最大索引值为2,于是乎:

    List<String> l=new ArrayList<String>(); l.add("北京"); l.add("南京"); l.add("东京"); ListIterator<String> it= l.listIterator(); if(it.previousIndex()==2){//这里判断光标是不是从后面开始的。 System.out.println("光标在后面"); }else{ System.out.println("光标不在后面"+it.previousIndex()); }

    控制台输出:光标不在后面-1 原来只用逆向遍历的时候,索引是在列表的前面,自然hasPrevious判断就是就是true,然后没有输出。

    -----------------------------这是我的思路和实验,有错误的话谢谢指正。

    Processed: 0.010, SQL: 8