-
tri sur fichier CSV
bonjour,
voila ma problématique:
J'ai deux fichier csv (équivalent d'un fichier excel), chacun comportant une colonne en commun. Le but est de les fusionner en prenant comme pivot les données de la colonne commune mais avec un souci de performance.
Mon idée était de les trier par la colonne determinant dans un premier temps.
(Mon premier probleme)
Puis de les fusionner.
(Mon deuxième problème)
Avez vous une piste ou une solution.
Merci a vous d'avance!!!! :)
-
Salut,
je te conseille dans un premier temps de ne pas optimiser et de faire qqch de simple. Si les perfs ne sont pas assez bonnes, tu pourras optimiser.
Il manque quelques données pour qu'on puisse réponde précisément:
- nombre de lignes identiques dans les deux fichiers?
- pas de doublons sur ton "pivot"?
Perso je ferai un truc de ce genre:
1) Faire un objet qui reflète une ligne du fichier fusionné, soit ObjetPerso
2) Parser le premier csv en remplissant une Map avec en clef l'info de ta colonne "pivot" et en valeur un ObjetPerso que tu remplis avec les infos des autres colonnes(Map<String, ObjetPerso>)
3) Parser le second fichier en complétant les objets de ta map (map.get("colonne pivot") te renverra l'ObjetPerso prérempli).
4) Tu as ta Map complète, itère dessus et crée ton nouveau fichier.
Autre possiblité en lieu et place des points 3) et4):
- Écrire ton nouveau fichier en parallèle de la lecture du second csv.
(récupération de l'objet, écriture de la ligne, ligne suivante identique...etc)
A plus
-
Si le tri t'intéresse tu pourrais utiliser deux TreeMap. Tu pourrais alors réaliser un parcourt itératif dans l'ordre et assembler les éléments correspondant : il faudrait pour cela parcourir la première liste et la second au même temps, quand la première dépasse la seconde, tu incrémente la seconde et vis versa, c'est relativement simple à faire, quand ils sont égaux tu fusionne. Je te conseillerais d'utiliser des copies de l'itérateur.