Méthode compareTo() de java

Résolu
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

  1. Modérateur
    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
    1. Bonjour,
      merci beaucoup KX ^ ^