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

  FORUM HardWare.fr
  Programmation
  Java

  HashSet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

HashSet

n°1563487
fusion_sad​am
:D
Posté le 22-05-2007 à 15:06:07  profilanswer
 

Bonjour  :hello:  
 
Voila mon probleme :  
je dispose d'un Arraylist d'objet "Site", un Site contenant plusieurs parametres dont le code NAF (un string).
Lors de la création de ce tableau, je souhaite récuperer toute les modalités differente de ce code NAF (faire l'équivalent d'un "Select distinct" en SQL)
Pour cela j'utilise donc un HashSet.
Ca marche correctement lorsque que dans mon HashSet je met juste le code Naf.
Et cela ne fonctionne pas quand j'essaye d'inserer un objet "Type" contenant le code Naf. Ca m'affiche des doublons.
 
voila mon code :
 

Code :
  1. ...
  2. HashSet test = new HashSet();
  3. HashSet test2 = new HashSet();
  4. ...
  5.   while (ligne_lu!=null ){
  6.    StringTokenizer T = new StringTokenizer(ligne_lu, "\t" );
  7.    String naf = T.nextToken();
  8.             int x = Integer.parseInt(T.nextToken());
  9.             int y = Integer.parseInt(T.nextToken());
  10.            
  11.             Site site = new Site(naf,x,y);
  12.             les_sites.ajouterUnSite(site);
  13.            
  14.             Type type = new Type(naf);
  15.             test.add(naf);      // La ca marche nickel
  16.             test2.add(type);    // La ca ne marche plus, j'ai des doublons
  17.            
  18.    ligne_lu = Br.readLine();
  19.   }


 
Ma classe Type :
 

Code :
  1. public class Type {
  2. private String NAF; // code NAF
  3. // private int Na=0;   // Na : Somme des sites de meme type
  4. //Constructeur
  5. public Type(String naf) {
  6.  NAF = naf;
  7. }
  8. public Type() {
  9. }
  10. // Méthode
  11. public void afficher(){
  12.  System.out.println("Type : "+ getNAF());
  13. }
  14. // Accesseurs et Mutateurs
  15. public String getNAF() {
  16.  return NAF;
  17. }
  18. public void setNAF(String naf) {
  19.  NAF = naf;
  20. }
  21. }


 
Voila, je ne sais pas comment faire autrement à part bidouller à partir du HashSet "test"
Merci de m'aider car suis pas sur d'avoir bien compris le fonctionnement des HashSet ( et pis de Java en géneral  :sweat: ).

mood
Publicité
Posté le 22-05-2007 à 15:06:07  profilanswer
 

n°1563502
fusion_sad​am
:D
Posté le 22-05-2007 à 15:14:27  profilanswer
 

J'ai vu qu'on pouvait également déclarer un HashSet comme ceci :
 
HahSet <Type> test2 = new HashSet <Type>();
 
mais j'ai alors les erreurs suivante :
 
HahSet cannot be resolved to a type
Syntax error, parameterized types are only available if source level is 5.0
The type HashSet is not generic; it cannot be parameterized with arguments <Type>  
 
 
 

n°1563519
did-54
Posté le 22-05-2007 à 15:26:55  profilanswer
 

Ouais faut écrire HashSet au lieu de Hahset surement :o
et apparemment tu es pas en Java5 donc t'as pas droit aux générics ?

n°1563544
fusion_sad​am
:D
Posté le 22-05-2007 à 15:44:54  profilanswer
 

did-54 a écrit :

Ouais faut écrire HashSet au lieu de Hahset surement :o
et apparemment tu es pas en Java5 donc t'as pas droit aux générics ?

 

Pour le HahSet, c'est juste une faute de copier coller

 

pour le Java5, j'en sais rien du tout, j'y connais strictement rien, j'ai juste installer eclipse car il parais que c'est plus sympa que le notepad.
Effectivement, ca l'est  :o
Nos profs d'info nous apprennent rarement les truc utiles du genre "C'est quoi une library ...  :sweat: "

 


Cela dis, pour mon probleme, aparement il faudrait que je redefinisse la méthode HashCode et equals :sweat:


Message édité par fusion_sadam le 22-05-2007 à 15:46:15
n°1569384
twif
Posté le 03-06-2007 à 22:06:01  profilanswer
 

bonsoir  
dans ton HashSet test = new HashSet(); tu jaoutes des Objet String
dans HashSet test2 = new HashSet(); des object Type
Du coup lors de l'ajout de ces objet dans la HashSet java compare les objets via la méthode équals et hashcode (Set est collection a objet unique d'ou le test equal, et hashSet est renforcé par une table de hash)
chaque élément ajouté, recherché ou supprimé font appel à ces méthodes pour calculer le code de hachage des objets et les comparer entre eux. (equals() et hashCode())  
Donc redéfinir ces deux méthodes dans ta classe Type


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

  HashSet

 

Sujets relatifs
Différence entre les HashSet et les LinkedHashSet dans l'API JavaTableau de HashSet
Probleme avec contains dans un HashSet 
Plus de sujets relatifs à : HashSet


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