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 :

Mettre à jour un HashMap


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut Mettre à jour un HashMap
    Bonjour, Je souhaite savoir comment mettre à jour la valeur lorqu'on ajoute une clé deja existante dans un HashMap. J'ai lu des topics parlant de redefinition de la methode equals() mais je ne comprend pas ??
    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    959
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 959
    Par défaut
    Heu... Vous voulez mettre à jour une valeur ou en ajouter une?

  3. #3
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    je souhaite mettre a jour une valeur si la key est présente dans mon Hashmap

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Il te suffit de faire un "put(cle, valeur)" comme lorsque tu ajoutes un nouvel élément à ta Map. Si la clé existe déjà dans ta Map, la nouvelle valeur écrase l'ancienne pour cette même clé, ce qui correspond à la mise à jour que tu voulais faire.

    La prochaine fois que tu fera un get(cle) sur ta Map, tu récupérera la derniere valeur enregistree pour cette clé (donc l'objet mis à jour).

    En espérant avoir été clair...

    Les objets java fournis par Sun servant généralement de clé (String, Integer...) ont déjà une méthode "equals()" et "hashcode()" assurant que tou se passe bien. La redéfinition (ou plutôt surcharge) de ces méthodes n'est nécessaire que lorsque tu utilises des objets que tu as développés toi même en guise de clé.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    au juste je me suis mal exprimé je voulais dire faire une addition de l'ancienne valeur avec la nouvelle

  6. #6
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par Diablo_22
    au juste je me suis mal exprimé je voulais dire faire une addition de l'ancienne valeur avec la nouvelle
    Tu procèdes en 3 temps:
    - récupération de l'ancienne valeur
    - addition avec ta nouvelle valeur dans une variable temporaire
    - écrasement de l'ancienne valeur par le résultat du calcul précédent

    En supposant que ta clé est un String et ta valeur un Integer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Map maMap;
     
    public void addtionne(String cle, int val) {
       Integer ancienneValeur = (Integer) maMap.get(cle);
       Integer nouvelleValeur = new Integer(ancienneValeur.intValue() + val);
       maMap.put(cle, nouvelleValeur);
    }
    Edit: évidemment, ce code est simpliste et non sécurisé (juste pour montrer la méthode): Il faut l'encapsuler avec les tests qui vont bien, car si la clé n'existait pas dans ta Map, tu te retrouves avec une bonne vieille NullPointerException...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Citation Envoyé par Diablo_22
    au juste je me suis mal exprimé je voulais dire faire une addition de l'ancienne valeur avec la nouvelle
    A ce compte là, il te faut redéfinir la méthode put dans une classe personnalisée qui fait le traitement que tu souhaites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    put(clé, valeur)
    nouvelleValeur = valeur;
    si (clé existe) alors {traitement personnalisé qui détermine la nouvelle valeur}
    super.put(clé,nouvelleValeur)
    [EDIT]grillé par CyberChouan [/EDIT]
    [EDIT 2]Une solution peut être plus élégante consisterait à faire un décorateur de map ...[/EDIT 2]

  8. #8
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par Fifan31
    [EDIT 2]Une solution peut être plus élégante consisterait à faire un décorateur de map ...[/EDIT 2]
    Un décorateur de Map?... Tiens, je connais plus ou moins le Pattern Décorateur, mais ça, je ne connaissais pas. Tu pourrais expliquer rapidement le principe? Ca m'intéresse (pour ma culture personnelle )
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  9. #9
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    Bien vu . Je te remercie pour ton coup de pouce et vos idées les gars

  10. #10
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Citation Envoyé par CyberChouan
    Un décorateur de Map?... Tiens, je connais plus ou moins le Pattern Décorateur, mais ça, je ne connaissais pas. Tu pourrais expliquer rapidement le principe? Ca m'intéresse (pour ma culture personnelle )
    En fait, tu en as presque fait un sans le savoir
    Le principe est le suivant: Le décorateur implémente la même interface que le "décoré" et le décorateur "connait" le "décoré" (en le passant en argument du constructeur par exemple).
    Ce qui peut donner schematiquement ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class MonDecorateur implements Map{
    private Map decore;
    public MonDecorateur(Map decore){
    this.decore = decore;
    }
     
    // Cette méthode et toutes les autres de l'interface ;)
    public void put(cle, valeur){
      // traitement specifique du decorateur (peut être vide)
     
      // après le traitement, appel de la méthode sur l'objet décoré
      decore.put(nouvelleCle, nouvelleValeur)
    }
    }
    Tu peux trouver une explication plus détaillée ici

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

Discussions similaires

  1. [Swing]Mettre à jour un champ d'un autre Jfame
    Par yoyothebest dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 14/09/2004, 13h39
  2. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56
  3. Réponses: 3
    Dernier message: 09/07/2004, 10h23
  4. Mettre à jour une table depuis une autre
    Par rsc dans le forum SQL
    Réponses: 4
    Dernier message: 09/07/2004, 10h08
  5. Réponses: 6
    Dernier message: 14/02/2003, 16h52

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