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 :

Problème HashMap, HashTable (get)


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
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Par défaut Problème HashMap, HashTable (get)
    Bonsoir,
    Je rencontre actuellement un problème avec un HashTable ou HashMap qui fais la correspondance entre une adresse mac et le port auquel il est connecté.
    Celà toujours dans le cadre d'une simulation d'un commutateur.
    Le problème est que quand je veux get le numéro du port, je me retrouves toujours avec null.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private Hashtable<MacAdr,Integer> macadr;
    macadr = new Hashtable(100);
     
    	public synchronized void ajouter(MacAdr a, int port) {
    		macadr.put(a, port);
    	}
    	public synchronized int getport(MacAdr m) {
    		return macadr.get(m);
    	}
    En cherchant la raison du problème, j'ai comme contenu de la HashTable, celà en rajoutant cette source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (Enumeration e = macadr.elements() ; e.hasMoreElements() ;) {
    	System.out.println(e.nextElement());
    }
    for (Enumeration e = macadr.keys() ; e.hasMoreElements() ;) {
    	System.out.println(e.nextElement());
    }
    Qui affiche bien le bon contenu :
    1
    0
    3
    2

    00:00:00:00:00:01
    00:00:00:00:00:00
    00:00:00:00:00:03
    00:00:00:00:00:02
    En faisant macadr.get(MacAdr), je devrais avoir comme valeur de retour le port (en Integer) mais j'ai toujours un null , est-ce bien comme sa qu'on récupère un élément dans une hashtable/hashmap ?

    Merci

  2. #2
    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
    Redéfini la méthode hashCode() de MacAdr.

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

    Citation Envoyé par ®om
    Redéfini la méthode hashCode() de MacAdr.
    Ainsi que la méthode equals() !

    Plus d'info dans la FAQ :


    Il s'agit de deux impératif pour qu'un objet puisse être utilisé en tant que clef d'une Map !

    a++

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Par défaut
    Re,
    J'ai réjouté dans la classe MacAdr, le hashCode cependant j'obtiens toujours l'erreur , ai-je bien re-défini la méthode hashCode() ?
    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
     
    public class MacAdr {
    	String address;
     
    	public MacAdr(String str) {
    		address = str;
    	}
     
    	public boolean equals(MacAdr mac) {
    		return (this.toString().compareTo(mac.toString())==0);
    	}
    	public int hashCode() {
    		return address.hashCode();
    	}
    	public String toString() {
    		return address;
    	}
    }
    Merci

  5. #5
    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
    Citation Envoyé par rune93
    ai-je bien re-défini la méthode hashCode() ?
    C'est equals() qui n'est pas redéfini equals(MacAdr) n'est pas une redéfinition de equals(Object), mais une surcharge (et donc une autre méthode).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public boolean equals(Object other) {
    	if (other instance MacAdr) {
    		MacAdr mac = (MacAdr) other;
    		return (this.toString().compareTo(mac.toString())==0);
    	}
    	return false;
    }
    a++

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Par défaut
    !! il fallait bien re-définir et non surcharger comme je l'ai fait !

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

Discussions similaires

  1. Problème de requête GET
    Par Odulo dans le forum Réseau
    Réponses: 2
    Dernier message: 22/08/2007, 13h44
  2. redéfinition equals, hashmap et get
    Par oc_alex86 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/05/2007, 15h52
  3. Problème+for+array+get
    Par xmane85 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/05/2006, 17h35
  4. Problème de mélange GET et POST
    Par rdummies dans le forum Langage
    Réponses: 7
    Dernier message: 01/05/2006, 22h29
  5. [FLASH MX2004] Problème de lien get url
    Par condorbleu777 dans le forum Dynamique
    Réponses: 5
    Dernier message: 24/04/2006, 20h48

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