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 :

Vector dans un HashMap et comparaisons


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut Vector dans un HashMap et comparaisons
    Bonjour,
    J'ai un cas un petit peu complexe de Vector imbriqué dans un hashMap, donc voici pour commencer un peu de code:

    La hashTable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final java.util.Hashtable<String,GroupeMaClasse> MaListeDeMaClasse = new java.util.Hashtable<String,GroupeMaClasse>();
    La classe "vecteur" GroupeMaClasse:

    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
    21
     
    private class GroupeMaClasse
    {
    private Vector<MaClasse> groupeClasse;
     
    	public GroupeMaClasse()
    	{
    		groupeClasse = new Vector<MaClasse>();
    	}
    	public void add(MaClasse addedClasse)
    	{
    		if(addedClasse != null)
    		{
    			groupeMaClasse.add(addedClasse);
    		}
    	}
    	public boolean contains(MaClasse submittedClasse)
    	{
    		return groupeMaClasse.contains(submittedClasse);
    	}
    }
    Et la classe Classe:

    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
    21
    22
     
    private static class MaClasse{
    //[..] Divers attributs...
     
    //[..] Divers accesseurs
     
    //[..] Constructeur
     
    public boolean equals(MaClasse comparedClasse)
    		{
    			if(comparaison attribut par attribut)
    			{
    				return true;
    			}
    			else
    			{
    				return false;
    			}
    		}
     
     
    	}
    A un moment dans mon code je veux savoir si à une clef "CLEF" (String), le vecteur de groupeMaClasse contient une instance de MaClasse équivalente à une référence, je fais donc:
    MaListeDeMaClasse.get("CLEF").contains(MaReference);

    Résultat: si je passe en paramètre l'instance exacte, la réponse est correcte (true), si je passe une instance équivalente (tous les champs de MaClasse égaux), la réponse est false, ce qui me fait penser que "contains()" de Vector utilise la fonction "equals()" d'Object et non de MaClasse, telle que définie dans le corps de la classe...
    Comment "forcer" contains à utiliser "mon" equals?

    Merci d'avance,
    LDPDC

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Je n'ai pas trop l'habitude des génériques, et il est donc possible que ce qui suit ne s'applique pas ici, mais avec un Vector "normal" il me semble que tu aurais du redéfinir la méthode equals(Object...) plutôt que de définir une nouvelle méthode equals(MaClasse...).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    Citation Envoyé par Astartee Voir le message
    Je n'ai pas trop l'habitude des génériques, et il est donc possible que ce qui suit ne s'applique pas ici, mais avec un Vector "normal" il me semble que tu aurais du redéfinir la méthode equals(Object...) plutôt que de définir une nouvelle méthode equals(MaClasse...).
    Après vérification, c'est tout à fait exact et en fait le fait que ce soit un générique n'a pas beaucoup d'influence: vector se contente de chercher le equals de la classe génériquée...

    Merci pour ta réponse,
    LDPDC

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant] représentation vector dans diagramme de class
    Par onap dans le forum Diagrammes de Classes
    Réponses: 5
    Dernier message: 23/12/2004, 22h01
  2. Ranger un tableau de String dans ma HashMap
    Par jeyce dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 26/08/2004, 22h41
  3. [Vector] Ajouter un Vector dans un autre Vector
    Par VinceFromBcn dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/06/2004, 21h54
  4. [ Vector Fichier ] Vector dans fichier texte
    Par geegee dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2004, 13h56
  5. Sauvegarde std::vector dans un .ini
    Par mick74 dans le forum MFC
    Réponses: 2
    Dernier message: 12/05/2004, 13h30

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