【问题标题】:JAVA Linked List How to loop through with a for loop?JAVA链表如何用for循环循环?
【发布时间】:2011-06-05 20:50:14
【问题描述】:

您好,我正在尝试创建一个遍历链表的 for 循环。对于每条数据,它将单独列出。我正在尝试在这里学习链表,所以请不要提供数组建议。有人知道怎么做吗?

示例输出:

  1. 187 号班机
  2. 501 航班

代码如下:

public static LinkedList<String> Flights = new LinkedList<String>();

public flightinfo(){
String[] flightNum = {"187", "501"};
        for (String x : flightNum)
        Flights.add(x);

                for (???)


}

【问题讨论】:

  • 为什么要遍历链表?我对你正在尝试做的事情感到困惑。现在,您有一个 LinkedList 和一个字符串数组,并且您正在迭代该字符串数组以将它们添加到 LinkedList。我不明白你的最终目标是什么。

标签: java linked-list


【解决方案1】:

只需使用增强的 for 循环,就像使用数组一样:

for(String flight : flights) {
   // do what you like with it
}

【讨论】:

    【解决方案2】:

    如果我理解正确,您必须获取对 List 的迭代器的引用并使用它来循环数据:

    ListIterator iterator = Flights.iterator(); 
    while (iterator.hasNext()){
      System.out.print(iterator.next()+" ");  
    }
    

    【讨论】:

      【解决方案3】:
      for(String y : Flights) {
      //...
      }
      

      和数组一样,因为它继承自Iterable&lt;T&gt;

      正如@Cold Hawaiian 所指出的,这仅适用于 Java >= 5.0

      如果使用 5.0 之前的版本:

      ListIterator<String> iter = Flights.iterator();
      while(iter.hasNext()) {
        String next = iter.next();
        // use next
      }
      

      【讨论】:

      • 这项工作我复制了第一个 for 循环,这是我的错误,因为它没有教给我任何东西。现在我明白了!谢谢
      【解决方案4】:

      您应该使用 ListIterator(有关更多信息,请参阅 Java API)。

      【讨论】:

        【解决方案5】:

        如果您在链表中有不同的值,这将起作用:

        for(Iterator<String> i = Flights.listIterator(); i.hasNext();){
            String temp = i.next();
            System.out.println(Flights.indexOf(temp)+1+". Flight "+temp );
        }
        

        如果您在链接列表中没有不同的值,这将起作用:

        int i=0;
        for(Iterator<String> iter = Flights.listIterator(); iter.hasNext();i++){
            String temp = iter.next();
            System.out.println(i+1+". Flight "+temp );
        }
        

        希望这会有所帮助。

        【讨论】:

          【解决方案6】:

          使用 Java8 实现 Iterable 的集合类具有 forEach() 方法。使用 forEach() 和 lambda 表达式,您可以轻松地迭代 LinkedList

          flights.forEach(flight -> System.out.println(flight));
          

          【讨论】:

            【解决方案7】:
            while(!flights.isEmptry) {
              System.out.println(flights.removeFirst());
            }
            

            【讨论】:

              猜你喜欢
              • 2015-03-21
              • 1970-01-01
              • 2016-06-07
              • 2011-07-10
              • 2021-03-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多