IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Ajout d'objet dans un HashSet (Doublon)


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9
    Par défaut Ajout d'objet dans un HashSet (Doublon)
    Bonjour,

    Je suis en train de travailler sur des HashSet de GenericClass (Classe que j'ai créée), classe pour laquelle j'ai implémenté equals() et hashCode(), et dont les attributs sont deux objets et un HashSet. Dans mon programme je boucle et sous certaines conditions j'ajoute une GeneriClass au HashSet.

    Problème : tous les elements du HashSet prennent la valeur du dernier élément ajouté.

    Exemple : C est le HashSet de GenericClass, les valeurs 1, 2 et 3 représentent les GenericClass à ajouter.
    premier tour de boucle, ajout de 1 : c = 1,
    deuxième tour ajout de 2 : c = 2, 2
    troisième tour ajout de 3 : c = 3,3,3
    ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    for (Element E : Ensemble)
    {
    	if (condition1)
    	{
                    // la genericClass GC prend les valeurs voulues
    		GC.setValues ; 
                    // j'ajoute la genericClass au hashSet<GenericClass> C 	
    		C.add(GC);			
    	}
     
    	if(condition2)
    	{
                    // la genericClass prend d'autres valeurs
    		GC.setValues(EE);	
    		// j'ajoute la genericClass au hashSet<GenericClass> C
                    C.add(GC);
    	}
    	System.out.println("nb elements C : "+C.size());
    	System.out.println (C.toString());
    }

    Y a t-il autre chose à implémenter pour manipuler un HashSet de classes(objets) ?


    Merci d'avance pour vos réponses...

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Comme tu ne crées pas d'objet dans la boucle, je suppose que tu n'as qu'un seul élément que tu modifies à chaque itération... bref le comportement que tu décrit est normal puisque tu n'as qu'une seule instance de l'objet en mémoire...

    Crée autant d'instance que nécessaire, et cela marchera déjà mieux.

    Les éléments utilisé dans les Set ou en clef des Map devraient être immuable. C'est à dire que tu ne devrais pas pouvoir changer leurs valeurs après leur création, ceci afin d'éviter de changer les valeurs de hashCode() et equals()...


    a++

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9
    Par défaut
    Ok merci !!!

    C'est bon ça marche.

    J'utilise beaucoup de hashSet et de hashMap, est ce que tu penses que je risque d'avoir des problèmes avec la mémoire ?

    Il a beaucoup de HashSet créés dans le déroulement de l'application, certains petits et certains très gros car ils contiennent l'ensemble des petits HashSet.

    Je ne sais pas si je suis très clair, mais en gros je me pose des questions sur la gestion de la mémoire. Sur un jeu de données réduit cela devrait passer mais sur un jeu de donnée plus gros j'ai peur de saturer la mémoire.


    Merci encore pour ta réponse précédente, cela me permet d'avancer...

    ++

Discussions similaires

  1. Ajout d'objet dans une classe
    Par Zorgloub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/02/2008, 21h04
  2. ajout d'objet dans ArrayList
    Par sos dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 03/04/2007, 21h03
  3. Ajout nouvel objet dans JList
    Par sorry60 dans le forum Composants
    Réponses: 2
    Dernier message: 09/12/2006, 22h37
  4. Ajout d'objet dans un produit
    Par senacle dans le forum Zope
    Réponses: 1
    Dernier message: 22/09/2006, 10h12
  5. [swing] modifier l'ajout d'objet dans un JTable
    Par Invité dans le forum Composants
    Réponses: 2
    Dernier message: 17/05/2006, 13h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo