cs_tamalgo
Messages postés19Date d'inscriptionvendredi 25 mars 2011StatutMembreDernière intervention30 octobre 2012
-
14 oct. 2011 à 19:23
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
26 oct. 2011 à 07:55
Bonsoir, voici mon code :
public class DGElement implements Comparable<DGElement>{
public int min;
public int max;
public String chemin;
public DGElement(String chemin){
this.min=0;
this.max=0;
this.chemin=chemin;
}
public void incMax(){
this.max=this.max+1;
}
public void setMin(int min){
this.min=min;
}
public int getMin(){
return min;
}
public void setMax(int max){
this.max=max;
}
public void setChemin(String chemin){
this.chemin=chemin;
}
public void afficher(){
System.out.println("le chemin :"+chemin+" le min:"+min+" le max:"+max);
}
public boolean equals(DGElement o){
return ((((DGElement) o).chemin).equals(this.chemin));
}
if (S.equals(S2)) {
return 0;
}
else{
return 1;
}
}
}
et j'ai une deusieme classe dans la quelle j'ai implementé cette methode:
public boolean verifierChemin(String path,Vector<DGElement> vecteurDGE) throws Exception{
DGElement elementcomparer=new DGElement(path);
if((vecteurDGE.contains(elementcomparer))){
return true;
}
else{
return false;
}
}
dans cette methode je verifier s'il existe un DGElement a le meme chemin
mais le resultat est toujours false pourtant j'ai redéfinie equals et le compareTo.Un aide svp merci d'avance.
cs_tamalgo
Messages postés19Date d'inscriptionvendredi 25 mars 2011StatutMembreDernière intervention30 octobre 2012 14 oct. 2011 à 23:39
Merci pour votre réponse ,je vient de trouver la solution :a chaque fois on redéfinie equals on doit redéfinir avec la méthode hashcode et voici la redéfinition pour mon problème :
Public int hashcode(){
Return this.chemin.hashcode() ;
}
Bonne nuits
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020370 14 oct. 2011 à 21:33
Bonjour,
Commence déjà par remplacer ta fonction verifierChemin par :
public boolean verifierChemin(String path,Vector<DGElement> vecteurDGE) throws Exception{
return vecteurDGE.contains(elementcomparer);
}
et ta fonction equals par :
public boolean equals(DGElement o){
return o.chemin.equals(this.chemin);
}
La méthode contains utilise la méthode equals, donc, ton code fonctionne je pense, es tu cetain que ton vecteur contient bien l'élément que tu souhaites rechercher ? Je dirais que tu n'as pas ajouté l'élement que tu recherches...
Pense à mettre ton sujet "résolu" stp.
Et à l'avenir, pense plutôt à redéfinir la méthode compareTo() car comme tu l'as vu, al redéfinition de equals() implique celle de hashCode() et il est très complexe de redéfinir proprement hashCode.
--
Pylouq
Vous n’avez pas trouvé la réponse que vous recherchez ?