队列中的null和isEmpty()有什么区别

时间:2019-02-07 04:01:38

标签: java null queue is-empty

enter image description here

使用q != null!q.isEmpty()有什么区别?
当我在以下代码中使用q!= null时,将不会对其进行编译。但是!q.isEmpty()效果很好。

java

Queue<TreeNode[]> q=new LinkedList<>();
q.add(new TreeNode[]{t1, t2});
while(q!=null){          // is not complied
    TreeNode[] t=q.remove();

    if(t[0]==null || t[1]==null) continue;

    t[0].val+=t[1].val;

    if(t[0].left==null) t[0].left=t[1].left;
    else q.add(new TreeNode[]{t[0].left, t[1].left});

    if(t[0].right==null) t[0].right=t[1].right;
    else q.add(new TreeNode[]{t[0].right, t[1].right});
}

1 个答案:

答案 0 :(得分:1)

'q'永远不会为null,因为您已经用new LinkedList实例化了它,因此将导致无限循环。因此,在您的示例中,您必须检查列表是否为空。但是应该编译