Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
steph
Bonjour, je suis confronté à un petit problème. J'ai une class Process et une class maStack
Dans le main() de maStack j'ai cette partie de code:
.... Process T1 = new Process(1, "init"); aStack.push(T1); ....
/* Retourne -1: non trouvé */ System.out.println(aStack.search(new Process(1, "init")));
/* Retourne NB >= 0 */ System.out.println(aStack.search(T1));
Pourquoi la premiere recherche ne trouve pas l'objet ?
La méthoode search() utilise la methode equals(): elle parcourt les objects de la pile et fait un lObjet.equals(monObjectRecherche) pour chacun jusqu'à ce que true soit renvoyé ou que toute la pile est été parcourrue.
Par défaut la methode equals compare les ID des objets (lié à son emplacement en mémoire):
public boolean equals(Object obj) { return (this == obj); }
Pour que ta première recherche fonctionne, la classe Process doit implémenter (surcharger) la methode equals:
public boolean equals(Object obj) { boolean returned = false; if (obj instance of this.class) { returned = (att1 == obj.att1) && (att2.equals(obj.att2); } return returned; } en supposant que ton constructeur Process(1, "init") renseigne les deux attributs att1 et att2.
Merci anticipé.
-- Delf
-- stephane retirez les lettres majuscules et le 666 de l'adresse pour l'utiliser.
Bonjour, je suis confronté à un petit problème.
J'ai une class Process et une class maStack
Dans le main() de maStack j'ai cette partie de code:
....
Process T1 = new Process(1, "init");
aStack.push(T1);
....
/* Retourne -1: non trouvé */
System.out.println(aStack.search(new Process(1, "init")));
/* Retourne NB >= 0 */
System.out.println(aStack.search(T1));
Pourquoi la premiere recherche ne trouve pas l'objet ?
La méthoode search() utilise la methode equals():
elle parcourt les objects de la pile et fait un
lObjet.equals(monObjectRecherche) pour chacun jusqu'à ce que true soit renvoyé
ou que toute la pile est été parcourrue.
Par défaut la methode equals compare les ID des objets (lié à son emplacement en
mémoire):
public boolean equals(Object obj)
{
return (this == obj);
}
Pour que ta première recherche fonctionne, la classe Process doit implémenter
(surcharger) la methode equals:
public boolean equals(Object obj)
{
boolean returned = false;
if (obj instance of this.class)
{
returned = (att1 == obj.att1) && (att2.equals(obj.att2);
}
return returned;
}
en supposant que ton constructeur Process(1, "init") renseigne les deux
attributs att1 et att2.
Merci anticipé.
--
Delf
--
stephane
retirez les lettres majuscules et le 666 de l'adresse pour l'utiliser.
Bonjour, je suis confronté à un petit problème. J'ai une class Process et une class maStack
Dans le main() de maStack j'ai cette partie de code:
.... Process T1 = new Process(1, "init"); aStack.push(T1); ....
/* Retourne -1: non trouvé */ System.out.println(aStack.search(new Process(1, "init")));
/* Retourne NB >= 0 */ System.out.println(aStack.search(T1));
Pourquoi la premiere recherche ne trouve pas l'objet ?
La méthoode search() utilise la methode equals(): elle parcourt les objects de la pile et fait un lObjet.equals(monObjectRecherche) pour chacun jusqu'à ce que true soit renvoyé ou que toute la pile est été parcourrue.
Par défaut la methode equals compare les ID des objets (lié à son emplacement en mémoire):
public boolean equals(Object obj) { return (this == obj); }
Pour que ta première recherche fonctionne, la classe Process doit implémenter (surcharger) la methode equals:
public boolean equals(Object obj) { boolean returned = false; if (obj instance of this.class) { returned = (att1 == obj.att1) && (att2.equals(obj.att2); } return returned; } en supposant que ton constructeur Process(1, "init") renseigne les deux attributs att1 et att2.
Merci anticipé.
-- Delf
-- stephane retirez les lettres majuscules et le 666 de l'adresse pour l'utiliser.
Delf
steph wrote:
Pour que ta première recherche fonctionne, la classe Process doit implémenter (surcharger) la methode equals:
public boolean equals(Object obj) { boolean returned = false; if (obj instance of this.class) { returned = (att1 == obj.att1) && (att2.equals(obj.att2); } return returned; } en supposant que ton constructeur Process(1, "init") renseigne les deux attributs att1 et att2.
Je m'étais justement posé la question qu'il était nécessaire de surcharger une méthode... mais ne sachant pas laquelle. Merci.
-- Delf
steph wrote:
Pour que ta première recherche fonctionne, la classe Process doit
implémenter (surcharger) la methode equals:
public boolean equals(Object obj)
{
boolean returned = false;
if (obj instance of this.class)
{
returned = (att1 == obj.att1) && (att2.equals(obj.att2);
}
return returned;
}
en supposant que ton constructeur Process(1, "init") renseigne les deux
attributs att1 et att2.
Je m'étais justement posé la question qu'il était nécessaire de
surcharger une méthode... mais ne sachant pas laquelle.
Merci.
Pour que ta première recherche fonctionne, la classe Process doit implémenter (surcharger) la methode equals:
public boolean equals(Object obj) { boolean returned = false; if (obj instance of this.class) { returned = (att1 == obj.att1) && (att2.equals(obj.att2); } return returned; } en supposant que ton constructeur Process(1, "init") renseigne les deux attributs att1 et att2.
Je m'étais justement posé la question qu'il était nécessaire de surcharger une méthode... mais ne sachant pas laquelle. Merci.