Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1718 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  occurences d'un objet dans une collection

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

occurences d'un objet dans une collection

n°1886990
liouan
Posté le 22-05-2009 à 11:21:27  profilanswer
 

Bonjour,
 
J'ai fait un bout de code qui analyse un fichier de log généré par log4j et qui contient entre autres, des exceptions.
Mon but est de récupérer les exceptions, de les parser et de les regrouper pour obtenir le nombre d'occurrences de chaque type d'exception.
Je parviens à les parser et à les transformer en objets exploitables. J'ai maintenant une collection d'objets qui représente ces exceptions.
 
Je souhaite compter le nombre d'occurrences de chacune de ces exceptions dans ma collection et je ne sais pas par quelle bout le prendre.
 
Je pense que le plus simple est d'utiliser une HashMap en redéfinissant les méthodes equals() et hashCode() sur mes objets qui représentent mes exceptions. Pour le equals(), tout va bien, je me suis fixé un critère d'égalité entre 2 exceptions. Pour le hashCode, je ne sais pas comment définir un hashcode en m'assurant que 2 exceptions que je considère égales auront le même hashCode.
 
Concrètement, mon critère d'égalité entre 2 exceptions se base sur 2 attributs String, disons s1 et s2, je veux que 2 exceptions e1 et e2 aient le même hashCode si et seulement si (e1.s1==e2.s1 && e1.s2==e2.s2). Je ne sais pas comment générer efficacement ce hashCode. Pouvez vous me guider?

mood
Publicité
Posté le 22-05-2009 à 11:21:27  profilanswer
 

n°1887000
liouan
Posté le 22-05-2009 à 12:07:31  profilanswer
 

j'ai trouvé ma réponse.
En fait, il suffit simplement de générer le hashcode directement à partir des String dont je me sers pour vérifer l'égalité entre mes exceptions.
 
Je pensais que le hashcode généré par des String était différent pour deux String générées de cette manière:
 
String s1=new String("lala" );
String s2=new String("lala" );
 
Apparemment, même généré de cette manière:
 
StringBuffer sb=new StringBuffer("machin" );
System.out.println(sb.toString().hashCode());
   
StringBuffer s= new StringBuffer("m" );
s.append("a" );
s.append("c" );
s.append("h" );
s.append("i" );
s.append("n" );
System.out.println(s.toString().hashCode());
 
on obtient encore les même hashCode(), meme si les 2 objets ne sont pas égaux au sens du '=='
 
J'ai donc généré mon hashCode de cette façon:
 
@Override
  public int hashCode() {
   StringBuffer sb= new StringBuffer();
   sb.append(s1);
   sb.append("#" );
   sb.append(s2);
   sb.append("#" );
   sb.append(jsp);
   return sb.toString().hashCode();
  }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  occurences d'un objet dans une collection

 

Sujets relatifs
[php][COM] objet com coté serveur (word)srand() + orientage objet
Compter les occurences d'un tableauProblème conception objet pour modeleur UML en GWT
static_cast objet fille pointeurPOO, objet rempli mais rien quand je l'affiche
[debutant] programmation objet et formulaire.Densité des mots clefs & Occurences
table relationnelles, vues objet et héritagePositionnement objet et image de fond
Plus de sujets relatifs à : occurences d'un objet dans une collection


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR