controllare se un oggetto è null

Ho una lista concatenata in cui il primo nodo contiene un oggetto null. significa firstNode.dati è uguale a null, firstNode.nextPointer = null, firstNode.previousPointer = null.

E voglio controllare se firstNode è nullo o non è.
Così ho provato

if(list.firstNode == null){

            //do stuff          
        }

ma questo non funziona?

Ho provato anche uguale. Qualche suggerimento?

Ho provato la stampa. E ho come-

{null} — firstNode

Si prega di spiegare “non funziona” in maggiore dettaglio.
Non sta all’interno del loop. È questo che intendo.
Quindi, forse, list.firstNode non è uguale a null?
Che il confronto dovrebbe funzionare. Usare Il Sistema..println() per stampare i due valori si stanno confrontando. Probabilmente troverete che ciò che si sta confrontando non è null.
Un punto degno di nota – non c’è nessuna tale cosa come un null oggetto; c’è un null .

OriginaleL’autore AKIWEB | 2012-02-19

6 Replies
  1. 13

    Penso che il tuo firstNode è non null, ma i suoi campi sono. Provare qualcosa di simile a questo:

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

    OriginaleL’autore Bohemian

  2. 1

    Hai provato

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

    OriginaleL’autore Skip Head

  3. 0

    Si verifica per la lista.firstNode essere null. Vuoi controllare per

    list.firstNode.data==null

    OriginaleL’autore David Nehme

  4. 0

    La risposta è nella domanda. Hai detto:

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

    Questo significa che si dovrebbe fare invece la seguente:

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

    OriginaleL’autore GETah

  5. 0

    Mi sembra che il problema è relativo all’elaborazione di un elenco collegato doppiamente.

    Per verificare se vuoto uso: (list.firstNode.next == list.firstNode.previous) questo è true per il vuoto di una lista doppiamente linkata.

    OriginaleL’autore Cratylus

  6. 0

    Si può controllare se tutti i campi del nodo sono null:

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

    O per evitare ripetizioni del codice, è possibile creare un metodo di istanza isNull() per fare il test o creare un oggetto NULLO e l’override del metodo equals nel Nodo di classe per verificare se un nodo è uguale a null il nodo di come lo hai descritto.

    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;
            }
        }

    Poi quando si vuole verificare se un nodo è null si può fare:

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

    OriginaleL’autore Hedja

Lascia un commento