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 :

Une map avec des clefs à plusieurs valeurs


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Une map avec des clefs à plusieurs valeurs
    Bonjour

    J'ai un tableau : Data2 les valeurs de ce dernier sont récupérer au fur et à mesure à partir d'une lecture d'une chaine de ce genre : 1,2 . je split sur , et je recupere les valeurs, et j'aimerais bien utiliser une map pour prendre la premiere valeur comme clef et l'autre comme sa valeur correspondante, le soucis c'est que j'ai des valeurs de ce genre : 1,2
    2,5
    2,6
    3,4
    4,1
    et le resultat que je veux obtenir est comme suit : [1=2, 2=[5,6], 3=4, 4=1]

    c'est à dire je veux obtenir une map avec des clefs qui peuvent contenir plusieurs valeurs. Merci de votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 100
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    Regarde le lien ci-dessous:

    http://www.developpez.net/forums/d10.../hashmap-java/

  3. #3
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    Un exemple qui fonctionne :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public class Main {
    	public static void main(String[] args) {
        new Main().process();
    	}
     
    	Pair pair1 = new Pair("1","1");
    	Pair pair2 = new Pair("1","2");
    	Pair pair3 = new Pair("2","1");
      Pair pair4 = new Pair("2","2");
      Pair pair5 = new Pair("1","5");
      List<Pair> pairs = new ArrayList<Pair>();
    	public void process() {
    	  pairs.add(pair1);
    	  pairs.add(pair2);
    	  pairs.add(pair3);
    	  pairs.add(pair4);
    	  pairs.add(pair5);
        Map<String, Set<String>> map = new HashMap<String, Set<String>>();
     
        for(Pair pair : pairs){
          String key = pair.key;
          String value = pair.value;
          Set<String> values = (Set<String>)map.get(key);
          if(values == null){
            Set<String> set = new HashSet<String>();
            set.add(value);
            map.put(key, set);
          }else{
             values.add(value);
          }
        }
        System.out.println(map);
    	}
     
    	public class Pair{
    	  String key;
    	  String value;
    	  public Pair(String key, String value){
    	    this.key=key;
    	    this.value=value;
    	  }
    	}
    }

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Citation Envoyé par jasmin59000 Voir le message
    Bonjour

    J'ai un tableau : Data2 les valeurs de ce dernier sont récupérer au fur et à mesure à partir d'une lecture d'une chaine de ce genre : 1,2 . je split sur , et je recupere les valeurs, et j'aimerais bien utiliser une map pour prendre la premiere valeur comme clef et l'autre comme sa valeur correspondante, le soucis c'est que j'ai des valeurs de ce genre : 1,2
    2,5
    2,6
    3,4
    4,1
    et le resultat que je veux obtenir est comme suit : [1=2, 2=[5,6], 3=4, 4=1]

    c'est à dire je veux obtenir une map avec des clefs qui peuvent contenir plusieurs valeurs. Merci de votre aide.
    Le plus simple reste d'utiliser une HashMap<Integer, HashSet<Integer>> au lieu d'une HashMap<Integer, Integer>

Discussions similaires

  1. Erreur dans une requête avec des valeurs contenant \
    Par KIK83 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/12/2009, 16h06
  2. Réponses: 7
    Dernier message: 23/11/2009, 15h59
  3. Réponses: 2
    Dernier message: 02/02/2008, 19h04
  4. Creer une date avec des valeurs prédéfinies
    Par baedal dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/05/2007, 10h58
  5. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15

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