在Java中迭代LinkedList



请允许我首先道歉,如果这是荒谬的基本。这是我第一次编程。

这里的问题是我需要打印一个LinkedList。有人能告诉我我哪里做错了吗?我有:

public class Queue {
private LinkedList list;
public Queue() { 
    list = new LinkedList(); 
}
}
public class BankQueue {
static Queue q = new Queue();
public static void main(String[] args) {
    //Insert a menu with a list of possible choices
public static void printQueue(Queue q) {
    for (String s : q) {
        System.out.println(q);
    }
}

我一直得到错误提示说我只能迭代一个数组或者java。lang。iterable的实例。谢谢你的帮助。非常感谢。

你需要遍历列表,而不是遍历你的类实例,它实际上没有实现Iterable,比如

public void printQueue(Queue q) {
     for(String s : q.getList()) {
         //do anything with your string
    }
}

当然,这意味着您的LinkedList实际上是LinkedList<String>,并且您在类中声明了list字段的getter,如public List<String> getList() { return list; }

你的类Queue是不可迭代的。

顺便说一下,它的名字与java.util.Queue冲突,其中可迭代的。

如果你真的想迭代Queuelist成员,你需要为它提供一个getter(它是私有的),或者自己写一个Visitor。

您似乎没有在qlist成员上迭代。您需要实现Iterable接口,或者直接迭代q.list

真正正确的方法是实现Iterable

您需要像下面这样使用迭代器遍历LinkedList:

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

相关内容

  • 没有找到相关文章

最新更新