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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
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