Méthode compareTo() de java

Résolu/Fermé
membre1990 - Modifié par membre1990 le 2/02/2015 à 23:42
 membre1990 - 3 févr. 2015 à 11:54
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 :)
A voir également:

1 réponse

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
Modifié par KX le 3/02/2015 à 08:34
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
0
Bonjour,
merci beaucoup KX ^ ^
0