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 :

Probleme de Map


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut Probleme de Map
    Bonjour,

    j'ai une classe Author :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Author {
        public Author(String firstName,String lastName) {
            this.firstName=firstName;
            this.lastName=lastName;
        }
        public @Override String toString() {
            return firstName+' '+lastName;
        }
        private final String firstName;
        private final String lastName;
    }
    et une classe Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import java.util.*;
     
    public class Main{
        public static void main(String [] args){
    	Map<Author,String> tels = new HashMap<Author,String>();
    	Author danBrown = new Author("Dan","Brown");
    	tels.put(danBrown,"001-745-897");
     
    	System.out.println(tels.get(danBrown));
    	System.out.println(tels.get(new Author("Dan","Brown")));
        }
    }
    A l'affichage, j'obtiens ceci :
    Pour quelle raison, j'obtiens le null ?

    Merci

  2. #2
    Membre confirmé Avatar de Resyek
    Inscrit en
    Juillet 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 97
    Par défaut
    Je me permets de te répondre rapidement, sans être expert sur les hashtable (cf ma propre question), mais je crois qu'il faut voir au niveau de la façon de comparer les clés. Fais une recherche sur Comparable dans le forum, il y a déjà des trucs à ce sujet.

    Bonne chance

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Il faut que tu redéfinisses la méthode hashCode(), en renvoyant par exemple la somme des hashCode du nom et du prénom (String)...

  4. #4
    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,


    Les Map utilisent par défaut les méthodes hashCode() et equals() pour comparer les clef...
    Tu dois donc redéfinir ces méthodes : http://www.developpez.net/forums/sho...4&postcount=42

    L'interface Comparable et sa méthode compareTo() ne sont utilisé que par certain SortedMap...

    a++

  5. #5
    Membre chevronné Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Par défaut
    Citation Envoyé par Premium
    (...)

    et une classe Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import java.util.*;
     
    public class Main{
        public static void main(String [] args){
    	Map<Author,String> tels = new HashMap<Author,String>();
    	Author danBrown = new Author("Dan","Brown");
    	tels.put(danBrown,"001-745-897");
     
    	System.out.println(tels.get(danBrown));
           // ici l'instance est une nouvelle référence en mémoire, la comparaison ne se fera pas tel que tu l'attends -> compareTo() ou equals(). 
    	System.out.println(tels.get(new Author("Dan","Brown")));
        }
    }
    A l'affichage, j'obtiens ceci :
    Pour quelle raison, j'obtiens le null ?

    Merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/07/2006, 14h45
  2. [Hibernate] Problème de mapping ?
    Par n@n¤u dans le forum Hibernate
    Réponses: 3
    Dernier message: 13/06/2006, 08h45
  3. Problem de Map et de List
    Par Roming22 dans le forum C++
    Réponses: 5
    Dernier message: 29/05/2006, 11h29
  4. [hibernate] probleme de mapping un-vers-plusieurs
    Par Elmilouse dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/04/2006, 13h37
  5. Un petit probleme de map()
    Par cryptorchild dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2005, 13h00

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