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 :

Est-il possible de faire une map qui contienne plusieurs fois la même clé ?


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 247
    Par défaut Est-il possible de faire une map qui contienne plusieurs fois la même clé ?
    Bonjour,

    est il possible de faire une map qui contienne plusieurs fois la même clé ?
    Je vous explique mon problème, je dois parser un fichier OFX (Open Financial Exhange) afin de récupérer des transactions bancaires.

    J'utilise pour cela OFX4J qui est une librairie spécialement conçue pour cela.

    Voici comment dans l'exemple qu'ils fournissent comment ils parsent un fichier.

    Ce qui me surprend c'est qu'un même agrégat (l'équivalent d'une balise en XML) correspondant à une transactions bancaires peut se présenter à plusieurs reprises (si plusieurs transactions) et à la suite.
    Cependant le code proposé utilise une map (association clé unique - valeur) est utilisée et cela a pour effet de remplacer la valeur de la clé plutôt que de créer un autre couple même clé - valeur.

    Je ne comprends pas comment justifier l'utilisation d'une map et ne sais pas comment ou par quoi la remplacer.

    Je vous montre tout de même le code proposé.
    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
     
    private static DefaultHandler getNewDefaultHandler(final Map<String, String> headers, final Stack<Map<String, Object>> aggregateStack) {
    		 	return new DefaultHandler() {
    		 	@Override
    		 	public void onHeader(String name, String value) {
    		 	headers.put(name, value);
    		 	}
     
    		 	@Override
    		 	public void onElement(String name, String value) {
    		 	char[] tabs = new char[aggregateStack.size() * 2];
    		 	Arrays.fill(tabs, ' ');
     
    		 	aggregateStack.peek().put(name, value);
    		 	}
     
    		 	@Override
    		 	public void startAggregate(String aggregateName) {
    		 	char[] tabs = new char[aggregateStack.size() * 2];
    		 	Arrays.fill(tabs, ' ');
     
    		 	TreeMap<String, Object> aggregate = new TreeMap<String, Object>();
    		 	aggregateStack.peek().put(aggregateName, aggregate);
    		 	aggregateStack.push(aggregate);
    		 	}
     
    		 	@Override
    		 	public void endAggregate(String aggregateName) {
    		 	aggregateStack.pop();
     
    		 	char[] tabs = new char[aggregateStack.size() * 2];
    		 	Arrays.fill(tabs, ' ');
    		 	}
    		 	};
    		 }
    Merci pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Non, mais pour une même clé, à la place d'avoir une seule valeur, tu peux avoir une liste de valeur.

    Devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<Key,Collection<Value>>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 247
    Par défaut
    Merci pour ta réponse, mais quel genre de collection ?

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par enzostar Voir le message
    Merci pour ta réponse, mais quel genre de collection ?
    Une collection toute simple de type List comme une ArrayList par exemple.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    À noter que c'est exactement à ça que servent les Multimap telles que ArrayListMultimap de la bibliothèque Guava.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Est-il possible de faire une requête hiérarchique ?
    Par Christophe Charron dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 21/03/2007, 14h32
  2. Réponses: 2
    Dernier message: 17/08/2006, 14h50
  3. [C#] Est-il possible de faire une référence sans recopie ?
    Par AiSpirit dans le forum EDI/Outils
    Réponses: 8
    Dernier message: 17/07/2006, 09h56
  4. Réponses: 7
    Dernier message: 09/05/2006, 11h30
  5. Est il possible de faire une fusion
    Par boy569 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/02/2006, 13h58

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