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

时间:2015-09-13 05:26:34

标签: java collections linked-list iterator listiterator

我是Java Collections的新手,我怀疑为什么我不能在向后的方向上遍历链表中的元素。我将解释我做了什么,请澄清我的怀疑。

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

    代码段:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
    </script>
    <div id="colorBox">
      <div class="circle"></div>
      <div class="circle"></div>
      <div class="circle"></div>
      <div class="circle"></div>
      <div class="circle"></div>
    </div>

    输出

    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());
          }
        }
     }
    
  3. Backward Iterations的输出在哪里?请任何人帮助我。谢谢你提前

2 个答案:

答案 0 :(得分:16)

我想你想要一个descendingIterator

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

答案 1 :(得分:4)

您可以这样做,但您需要使用方法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());