2015-04-02 28 views
-1

我已經創建了一個字符串列表,我需要使用迭代器來顛倒它們的順序。這是我的,但它不起作用。有人可以幫助我找到一種方法來做到這一點,或告訴我我做錯了什麼?如何顛倒使用迭代器的字符串列表中的順序?

import java.util.Iterator; 
import java.util.ListIterator; 
import java.util.Arrays; 
import java.util.ArrayList; 
import java.util.List; 
public class nameList2 
{ 
    public static void main(String[] args) 
    { 
     List<String> nameList = new ArrayList<String>(); 

     nameList.add("Joey");         //list of Strings 
     nameList.add("Nicole"); 
     nameList.add("Lucas"); 
     nameList.add("Bobby"); 
     nameList.add("Michelle"); 
     nameList.add("Allie"); 

     Iterator<String> nameIterator = nameList.iterator();  //iterator 

     for(String s : nameList)        //for, each loop 
     { 
      if(nameIterator.hasNext());       //compile list 
       nameIterator.next(); 
     } 

     for(String s: nameList)         //for, each loop 
     { 
      if(nameIterator.hasPrevious());      //error states method cannot find hasPrevious? 
       System.out.println(nameIterator.previous()); 
     } 

    } 
} 
+1

爲什麼你不能'Collections.reverse(nameList);'? – JonK 2015-04-02 13:14:06

+0

使用ListIterator而不是Iterator – Prashant 2015-04-02 13:15:05

回答

2

使用的ListIterator代替迭代爲:

ListIterator<String> list = nameList.listIterator(nameList.size()); 

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

,你也可以做Jonk提示使用Collections.reverse(nameList);

0

使用兩個ListIterators,一個在開始,一個在結尾並交換,直到他們見面。 不要忘記邊緣的情況下(S)

0
public static void main(String[] args) { 
    List<String> nameList = new ArrayList<String>(); 

    nameList.add("Joey");         //list of Strings 
    nameList.add("Nicole"); 
    nameList.add("Lucas"); 
    nameList.add("Bobby"); 
    nameList.add("Michelle"); 
    nameList.add("Allie"); 

    ListIterator<String> list = nameList.listIterator(); 

    System.out.println("Before Reversed\n"); 

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

    System.out.println("\nAfter Reversed \n"); 

    while(list.hasPrevious()){ 
     System.out.println(list.previous()); 
    } 
}