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 :

modifier une valeur dans un HashMap tout en le parcourant


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut modifier une valeur dans un HashMap tout en le parcourant
    Bonjour.

    J'aimerais savoir si c'est possible de modifier une valeur dans un HasMap tout en le parcourant avec Entry ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for ( Map.Entry<String,Integer> i : maMap.entrySet()){
     
                                i.getValue() += 2 ;
     
                    }
    Quelque chose comme ca si ca pouvait marcher.

    Merci

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Tu y étais presque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	for (Map.Entry<String, Integer> i : maMap.entrySet()) {
    		i.setValue( i.getValue() + 2 );
    	}

    a++

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Merci, Adiguba !

    Pour aller plus loin, est-il possible de supprimer une valeur tout en parcourant la HashMap ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    for ( Map.Entry<String,Value> entry : maMap.entrySet()){
         if ( value.conditionX() ){
              entry.remove() ;
         } 
    }

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par mazertys17 Voir le message
    Pour aller plus loin, est-il possible de supprimer une valeur tout en parcourant la HashMap ?
    Non. Il me semble que quelques maps pourraient le supporter (genre ConcurrentHashMap). Mais ce n'est pas une bonne pratique, changer le type de map pourrait casser ton code. Dans ce cas, il faut utiliser un iterator. Ca permet de rendre clair à la premiere lecture quelles sont tes intentions (le code est plus propre et simple à relire).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (Iterator<Map.Entry<String,Value>> entries = maMap.entrySet().iterator(); entries.hasNext(); ) {
        Map.Entry<String,Value> entry = entries.next();
        if ( value.conditionX() ){
              entry.remove() ;
        } 
    }

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Ok, merci.

    Encore une chose.

    Est-il possible d'arrêter de parcourir une boucle avec EntrySet ?

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    for ( Map.Entry<Integer,String> entry : maMap.entrySet()){
           if ( entry.getValue().equal("test"){
                   fonctionX.doSomething();
                   entry.end();//la boucle arrête de parcourir la liste
           }
    }

  6. #6
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    oui. Sauf que pour arreter la boucle, il ne faut pas appeler une fonction end() mais simplement un break. Ca donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ( Map.Entry<Integer,String> entry : maMap.entrySet()){
           if ( entry.getValue().equal("test"){
                   fonctionX.doSomething();
                   break;//la boucle arrête de parcourir la liste
           }
    }

Discussions similaires

  1. modifier une valeur dans des variables
    Par bombjack91 dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/06/2007, 08h14
  2. Modifier une valeur dans un fichier xml
    Par arthrax dans le forum VBScript
    Réponses: 3
    Dernier message: 03/04/2007, 09h46
  3. Modifier une valeur dans un fichier sans passer par l'éditeur
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/06/2006, 00h15
  4. modifier une valeur dans une hash
    Par chaabane dans le forum Langage
    Réponses: 1
    Dernier message: 17/03/2006, 10h59
  5. [C#] Modifier une valeur dans une DataTable
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/05/2005, 10h45

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