如何在遍历双向链表时跳过空虚节点

时间:2015-11-22 06:14:25

标签: java doubly-linked-list nosuchelementexception

我有一个双向链表,看起来像:

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错误,但我无法弄清楚如何修复它。我的猜测是我得到了这个错误,因为当我到达第二个空虚拟节点时,我尝试跳过它,但没有其他节点可以跳转到。

我的问题是,如何更改我的代码,以便在跳过两个空虚拟节点时打印双向链表中的每个元素?

1 个答案:

答案 0 :(得分:1)

您所要做的就是将测试与println结合使用:

while (it.hasNext()) {
   Integer val = it.next();
   if (val != null){
       System.out.println(val);
   }
}

如果你在循环中做了一个额外的下一个,你跳过一个hasNext,这就是你遇到异常的原因。