在SinglyLinkedList中迭代节点的方法

时间:2018-01-19 19:42:56

标签: java iteration

我最近遇到了从头到尾迭代节点的问题。

我通常使用此方法进行迭代:

Node<E> walk = head;
while (walk != null) {
    //do the job
    walk = walk.getNext();
}

但是当我尝试使用for-loop时,我得到了一个空指针错误

for (Node<E> walk = head; walk.next != null; walk = walk.next) {
    //do the job
}

我只需要使用while循环来迭代节点吗?或者只是因为我的错误而导致我的代码出错?

另外,walk.next和walk.getNext有什么区别?我以为他们是同样的事情

这是一个getNext方法

public Node<E> getNext() { return next; }

1 个答案:

答案 0 :(得分:2)

下面的代码应该可行,因为在您的代码中,您将迭代到walk==null 这是您在访问null时获得walk.next的原因null.next所以请遵循以下代码。希望它有所帮助。

for (Node<E> walk = head; walk != null; walk = walk.next) {
    //do the job
}