Bonjour,
Je débute en Java et je galère un peu (beaucoup).
Je vous explique mon problème, j'ai un fichier plat et je le lis grâce à Java.
Le but est de créer plusieurs fichiers de sortie (un fichier par commande).
Dans ce fichier, j'ai un numéro de commande (136670 et 136609):
136670 00000000000000000 ABC
136670 00000000000000000 ABD
136670 00000000000000000 ABE
136609 00000000000000000 ABC
136609 00000000000000000 ABD
136609 00000000000000000 ABD
136609 00000000000000000 ABE
J'ai donc crée une HashMap, ou je mets le numéro de commande 136670 puis 136609.
Ma HashMap actuel:
Clé: 136670
Valeurs: 136670 00000000000000000 ABC
136670 00000000000000000 ABD
136670 00000000000000000 ABE
Clé: 136609
Valeurs: 136609 00000000000000000 ABC
136609 00000000000000000 ABD
136609 00000000000000000 ABD
136609 00000000000000000 ABE
///
J'ai mis l'essentiel du code. Je me sers du LinkedHashMap pour envoyer en sortie le fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 LinkedHashMap<String, StringBuilder> order = new LinkedHashMap<String, StringBuilder>(); while((line = br.readLine()) != null){ String lineId = line.substring(ORDER_START_POSITION, ORDER_END_POSITION); if(order.get(lineId) != null){ StringBuilder stringBuilder = order.get(lineId); stringBuilder.append("\n"+(line)); order.put(lineId, stringBuilder); } else{ order.put(lineId, new StringBuilder(line)); } }
Mon code fonctionne mais je n'arrrive pas à faire deux choses me sont nécessaires:
- Si le nombre d'entrée de valeurs dans le LinkedHashMap est supérieurs à 2, je voudrai créer une nouvelle HashMap, puis 4 une nouvelle HashMap.
- Si le nombre d'entrée de valeurs dans le LinkedHashMap est supérieurs à 2, je veux incrémenter un chiffre de 800, si égal à 4 à 801 ainsi de suite.
Exemple avec mon fichier:
Clé: 136670
Valeurs: 136670 00000000000000000 ABC
136670 00000000000000000 ABD
Avec un code 800.
Clé: 136670
Valeurs: 136670 00000000000000000 ABE
Avec un code 801.
-----------------------------------------------
Clé: 136609
Valeurs: 136609 00000000000000000 ABC
136609 00000000000000000 ABD
Avec un code 800.
Clé: 136609
Valeurs: 136609 00000000000000000 ABE
136609 00000000000000000 ABF
Avec un code 801.
Clé: 136609
Valeurs: 136609 00000000000000000 ABE
Avec un code 802.
Le problème c'est que je n'arrive pas à découper mon HashMap en plusieurs HashMap.
J'ai pensé à passer par un LinkedHashMap, un TreeMap mais je n'arrive pas à découper un HashMap en plusieurs sous HashMap...
Avez-vous une idée pour réussir ce découpage ?
Merci d'avance.
Partager