【问题标题】:How do i reverse the order in a list of strings using iterator?如何使用迭代器反转字符串列表中的顺序?
【发布时间】:2015-04-02 13:11:04
【问题描述】:

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

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

    }
}

【问题讨论】:

  • 你为什么不能Collections.reverse(nameList);
  • 使用 ListIterator 而不是 Iterator

标签: java list iterator listiterator


【解决方案1】:

使用 ListIterator 代替 Iterator 作为:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      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());
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 2022-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多