JAVA链接列表如何使用for循环进行循环?

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

示例输出:

  1. 187航class
  2. 501航class

我之前的代码:

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

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

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

如果我理解正确,你必须获得List的迭代器的引用并使用它来遍历数据:

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

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

 for(String y : Flights) { //... } 

与数组相同,因为它inheritance自Iterable

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

如果5.0之前使用:

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

如果链表中有不同的值,则可以使用:

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

如果链表中没有不同的值,则可以使用:

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

希望这可以帮助。

使用Java8 Collection实现Iterable的类有一个forEach()方法。 使用forEach()和lambda表达式,您可以轻松地遍历LinkedList

 flights.forEach(flight -> System.out.println(flight)); 
 while(!flights.isEmptry) { System.out.println(flights.removeFirst()); }