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

时间:2015-04-02 13:11:05

标签: java list iterator listiterator

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

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

    }
}

3 个答案:

答案 0 :(得分:2)

使用 ListIterator 代替 Iterator

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

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

您也可以使用Collections.reverse(nameList);建议 Jonk

答案 1 :(得分:0)

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

答案 2 :(得分: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());
    }
}