Méthode compareTo() de java
Résolu
membre1990
-
membre1990 -
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()
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 :)
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:
- Méthode compareTo() de java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
1 réponse
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...
La confiance n'exclut pas le contrôle
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
merci beaucoup KX ^ ^