我最近遇到了从头到尾迭代节点的问题。
我通常使用此方法进行迭代:
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; }
答案 0 :(得分:2)
下面的代码应该可行,因为在您的代码中,您将迭代到walk==null
这是您在访问null
时获得walk.next
的原因null.next
所以请遵循以下代码。希望它有所帮助。
for (Node<E> walk = head; walk != null; walk = walk.next) {
//do the job
}