Méthode compareTo() de java [Résolu/Fermé]

Signaler
-
 membre1990 -
bonsoir :)
je veux comparer deux Noeuds dont ses info sont de type E, pour coder un arbre binaire de recherche.
voila mon code de la méthode compareTo()

 public class Noeud <E extends Comparable>{
E info;
Noeud<E> filsG;
Noeud<E> filsD;
public Noeud(E i,Noeud g, Noeud d)
{
this.info=i;
this.filsG=g;
this.filsD=d;
}
public int compareTo(E n)
{
if(this.info==n)
return 0;
else
{
if(this.info<n) //********* ligne de l'erreur
return -1;
else
return 1;
}
}
}


mais l'erreur suivant se produit

""" bad operand types for binary operator '<'
first type: E
second type: E """

comment je peux faire, alors, pour la comparaison entre mes Noeuds ??
merci pour toute réponse :)

1 réponse

Messages postés
16110
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
13 février 2020
2 536
Bonjour,

Tu ne peux pas comparer deux objets avec < ou > c'est d'ailleurs à ça que sert l'interface Comparable et la méthode compareTo.

Remarque : l'interface Comparable est paramétrée, il faut donc préciser sur quel type d'éléments tu compares (ici : E), idem pour la classe Noeud.
De plus la méthode compareTo de la classe Noeud n'a de sens que si Noeud implémente elle même Comparable, paramétrée avec un type Noeud cette fois...

package nbrepremier;

public class Noeud<E extends Comparable<E>> implements Comparable<Noeud<E>> {

    private E info;
    private Noeud<E> filsG;
    private Noeud<E> filsD;

    public Noeud(E i, Noeud<E> g, Noeud<E> d) {
        this.info = i;
        this.filsG = g;
        this.filsD = d;
    }

    @Override
    public int compareTo(Noeud<E> n) {
        //TODO: gérer les cas n==null, info==null, n.info==null
        return info.compareTo(n.info);
    }
}

La confiance n'exclut pas le contrôle
Bonjour,
merci beaucoup KX ^ ^