Ciao!
Ho una classe ListNode che ha questi due metodi che utilizzano il metodo
equals().
NODE è fatta così:codice:public class ListNode implements List, Serializable { private Node node; /** Riferimento ad un oggetto di classe Node; * è il primo nodo della lista. */ /** Metodo che cancella un elemento dalla lista: ricerca l'elemento richiesto; * se viene trovato, i riferimenti vengono cambiati in modo da escludere * l'elemento da cancellare. Se l'elemento non viene trovato, la lista non cambia. * In ogni caso il chiamante non viene notificato. */ public void remove(Object o) { if (!isEmpty()) { Node pred = node; Node tmp = node.next; if (node.info.equals(o)) node = node.next; else while(tmp != null) if (tmp.info.equals(o)) { pred.next = tmp.next; return; } else { pred = pred.next; tmp = tmp.next; } } } /** Metodo che dice se un elemento è nella lista. */ public boolean contains(Object o) { Node tmp = node; while (tmp != null) { if (tmp.info.equals(o)) return true; tmp = tmp.next; } return false; } }
Io ho ridefinito il metodo equals() nella classe ClienteSocieta:codice:class Node implements Serializable { Object info; Node next; /** next è un riferimento ad un oggetto della classe stessa.*/ public Node(Object o) { this(o, null); } public Node(Object o, Node n) { info = o; next = n; } }
Ci deve essere qualcosa che non va, perchè quando utilizzo i metodi remove() e contains() di una ListNode contenente oggetti ClienteSocieta non funzionano correttamente!codice:public class ClienteSocieta implements Serializable { protected String codice, nome, indirizzo, partitaIva, telefono; /** Metodo costruttore. */ public ClienteSocieta(String cod, String nom) { codice = cod; nome = nom; } .................................... ................................. /** Ridefinizione del metodo equals(). */ public boolean equals(Object o) { if(o instanceof ClienteSocieta) { ClienteSocieta c = (ClienteSocieta)o; if (((c.getNome()).equals(nome)) || ((c.getCodice()).equals(codice))) return true; } return false; } }
Qualcuno può aiutarmi a capire il perchè?
GRAZIE MILLE!
![]()

Rispondi quotando