我有一个双向链表,看起来像:
null
1
2
3
null
当我使用带有下面代码的迭代器遍历列表时,输出将完全打印出上面写的内容。
Iterator<Integer> it = lst.iterator(); // tests iterator method
while (it.hasNext()) {
Integer val = it.next();
System.out.println(val);
}
但是,我想在遍历列表时跳过空节点,以便它只打印:
1
2
3
我无法得到我的代码。这是我到目前为止所提出的。
Iterator<Integer> it = lst.iterator(); // tests iterator method
while (it.hasNext()) {
Integer val = it.next();
if (val == null)
it.next()
System.out.println(val);
}
问题在于我收到NoSuchElementException错误,但我无法弄清楚如何修复它。我的猜测是我得到了这个错误,因为当我到达第二个空虚拟节点时,我尝试跳过它,但没有其他节点可以跳转到。
我的问题是,如何更改我的代码,以便在跳过两个空虚拟节点时打印双向链表中的每个元素?
答案 0 :(得分:1)
您所要做的就是将测试与println结合使用:
while (it.hasNext()) {
Integer val = it.next();
if (val != null){
System.out.println(val);
}
}
如果你在循环中做了一个额外的下一个,你跳过一个hasNext,这就是你遇到异常的原因。