检查对象是否为空

时间:2012-02-19 19:41:48

标签: java

我有一个链表,其中第一个节点包含空对象。表示firstNode.data等于null,firstNode.nextPointer = null,firstNode.previousPointer = null。

我想检查firstNode是否为null。 所以我试过 -

if(list.firstNode == null){

            //do stuff          
        }

但这不起作用?

我也试过等于。有什么建议吗?

我试过打印。我得到了 -

{null} - firstNode

6 个答案:

答案 0 :(得分:13)

我认为您的firstNode 不是 null,但其字段是。尝试这样的事情:

if (list.firstNode.data == null) {
    //do stuff          
}

答案 1 :(得分:1)

你试过吗

if (list.firstNode.data == null) { /* Do stuff */ }

答案 2 :(得分:0)

检查list.firstNode是否为null。你的意思是检查

list.firstNode.data==null

答案 3 :(得分:0)

问题的答案就在于此。你说:

 have a linked list in which first node contains null object. **means firstNode.data is equal to null**,

这意味着您应该执行以下操作:

if(list.firstNode.data == null){
     //do stuff          
}

答案 4 :(得分:0)

在我看来,你的问题与处理双重链表有关 要检查是否为空,请使用(list.firstNode.next == list.firstNode.previous)这是true,表示空的双向链接列表。

答案 5 :(得分:0)

您可以检查节点的所有字段是否为空:

Node firstNode = list.firstNode;
if(firstNode.data == null &&
   firstNode.nextPointer == null &&
   firstNode.previousPointer == null) {
    //Do stuff
}

或者为了防止代码重复,您可以创建实例方法isNull()来进行测试或创建NULL对象并覆盖Node类中的equals方法以检查节点是否等于null节点描述

class Node<E> {
    //The null node, assuming your constructor takes all three values.
    public static final Node NULL = new Node(null, null, null);

    //Fields here with constructors etc.

    @Override
    public void equals(Object obj) {
        if(!obj instanceof Node) return false;
        Node<?> node = (Node<?>)obj;
        if(node.data.equals(this.data) &&
           node.nextPointer == this.nextPointer &&
           node.previousPointer == this.previousPointer) {
            return true;
        } else {
            return false;
        }
    }

然后,当您想要检查节点是否为空时,您可以执行以下操作:

if(list.firstNode.equals(Node.NULL)) {
    //Do stuff
}