如何使用迭代器反转字符串列表中的顺序?

How do i reverse the order in a list of strings using iterator?

我创建了一个字符串列表,我需要使用迭代器反转它们的顺序。这就是我所拥有的,但它不起作用。有人可以帮我找到一种方法来做到这一点,或者告诉我我做错了什么吗?

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());
        }

    }
}

使用两个 ListIterators,一个在开头,一个在结尾,然后交换直到它们相遇。 并且不要忘记边缘情况

使用 ListIterator 而不是 Iterator 作为 :

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

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

你也可以按照Jonk的建议使用Collections.reverse(nameList);

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());
    }
}