如何以相反的顺序迭代LinkedList元素?

我是Java集合的新手,我怀疑为什么我不能向后遍历linklist中的元素。下面我将解释我做了什么,并请澄清我的疑虑。

  1. 我为正向迭代创建了接口迭代器,为后向迭代创建了列表迭代器。为什么向后迭代不起作用?
  2. 我不能在同一个程序中使用迭代器listiterator接口在向前和向后迭代中遍历一组元素吗?

    代码片段 :

    import java.util.*;
    class NewClass{
    public static void main(String args[]){
      LinkedList<String> obj = new LinkedList<String>();
    
       obj.add("vino");
       obj.add("ajith");
       obj.add("praveen");
       obj.add("naveen");
    
       System.out.println(obj);
    
       System.out.println("For loop ");
       //using for loop
       for(int count=0; count < obj.size(); count++){
         System.out.println(obj.get(count));
       }
      System.out.println("For each loop ");
    
      //using foreach loop
      for(String s:obj){
         System.out.println(s);
      }
      System.out.println("Whileloop ");
    
      //using whileloop
      int count=0;
      while(obj.size() > count){
          System.out.println(obj.get(count));
        count++;
      }
      System.out.println("Forward Iterations ");
      //using iterator 
      Iterator it = obj.iterator();
      while(it.hasNext()){
         System.out.println(it.next());
      }
      ListIterator lit = obj.listIterator();
      System.out.println("Backward Iterations");
       while(lit.hasPrevious()){
        System.out.println(lit.previous());
          }
        }
     }
    

    输出

    [vino, ajith, praveen, naveen]
     For loop 
     vino
     ajith
     praveen
     naveen
    For each loop 
     vino
     ajith
     praveen
     naveen
    Whileloop 
     vino
     ajith
     praveen
     naveen
    Forward Iterations 
     vino
     ajith
     praveen
     naveen
     Backward Iterations
    

向后迭代的输出在哪里?请任何人帮助我。提前致谢


答案 1

我想你想要一个降序算法

Iterator lit = obj.descendingIterator();
System.out.println("Backward Iterations");
while(lit.hasNext()){
  System.out.println(lit.next());
}

答案 2

您可以这样做,但需要使用该方法来指定要从 的末尾开始。listIterator(int index)List

LinkedList<String> obj = new LinkedList<String>();

obj.add("vino");
obj.add("ajith");
obj.add("praveen");
obj.add("naveen");

ListIterator<String> it = obj.listIterator(obj.size());
while (it.hasPrevious())
    System.out.println(it.previous());