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é.
Merci pour votre aide
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, ' '); } }; }
Partager