通过Java中的LinkedList进行迭代

时间:2013-04-25 18:00:18

标签: java linked-list

如果这是荒谬的小学,请先告诉我。这是我第一次编程。

这里的问题是我需要打印出一个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的实例。谢谢您的帮助。真诚地感谢。

4 个答案:

答案 0 :(得分:3)

您需要遍历列表,而不是遍历您的类实例,而实际上并未实现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; }

答案 1 :(得分:1)

您的班级Queue不可迭代。

顺便提一下,它的名称与java.util.Queue发生冲突,其中 可迭代。

如果你真的试图迭代list成员Queue,你需要提供一个getter(它是私有的),或者自己写一个访问者。

答案 2 :(得分:0)

您似乎没有在list的{​​{1}}成员上进行迭代。您需要实现q接口,或直接迭代Iterable

真正正确的方法是实施q.list

答案 3 :(得分:0)

你需要使用迭代器来遍历LinkedList,如下所示:

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