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

avec Java Discussion :

Comparaison de tableaux et insertion de colonnes


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 113
    Points : 65
    Points
    65
    Par défaut Comparaison de tableaux et insertion de colonnes
    Bonjour,

    Voila, je développe actuellement un outil permettant de faire un tableau global à partir de plusieurs tableaux.

    J'ai donc x objets 'facture' de type Array contenant chacun une liste d'objets 'colonne'.
    Ces objets colonnes sont composés de la manière suivante:
    - Variable id
    - variable nom
    - variable valeur

    Voila, le but de mon outil est de sortir un fichier CSV avec en entête toute les colonnes (suivant l'id) et pour les lignes les valeurs correspondantes.

    Cela à l'air facile, sauf que je peux avoir
    - répétition de plusieurs blocs de colonnes. Dans ce cas, je dois 'aligner' les 1er colonnes de même ID puis ajouter les colonnes supplémentaires (en positionnant bien sur des valeurs vides dans les lignes précédentes).
    - Avoir des colonnes n'apparaissant pas dans les factures précédentes.

    Un petit exemple:

    De haut en bas, id, nom, valeur.

    Facture1 Array de 6 objets colonne

    NF | NO | RBDD | RBDF | RBT | SE
    NUM_FACT | NOM | RB_DATE_DEB | RB_DATE_FIN | RB_TAXE | SEXE
    155544545 | TOTO| 25/05/2013 | 27/05/2013 | 4.60 | M


    Facture2 Array de 9 objets colonne

    NF | NO | RBDD | RBDF | RBT | RBDD | RBDF | RBT | SE
    NUM_FACT | NOM | RB_DATE_DEB | RB_DATE_FIN | RB_TAXE | RB_DATE_DEB | RB_DATE_FIN | RB_TAXE | SEXE
    155548686 | TITI | 28/05/2013 | 29/05/2013 | 8.68 | 01/06/2013 | 05/06/2013 | 1.80 | F

    Facture3 Array de 9 objets colonne

    NF | NO | MD | BAN | RBDD | RBDF | RBT | SE
    NUM_FACT | NOM | MODE | IBAN | RB_DATE_DEB | RB_DATE_FIN | RB_TAXE | SEXE
    845548455 | TUTU | AUTO |415435434343434 | 29/05/2013 | 30/05/2013 | 8.33 | F

    Je voudrais donc obtenir le résultat suivant:

    NF | NO | MD | BAN | RBDD | RBDF | RBT | RBDD | RBDF | RBT | SE
    NUM_FACT | NOM | MODE | IBAN |RB_DATE_DEB | RB_DATE_FIN | RB_TAXE | RB_DATE_DEB | RB_DATE_FIN | RB_TAXE | SEXE
    155544545 | TOTO| x | x | 25/05/2013 | 27/05/2013 | 4.60 | x | x | x | M
    155548686 | TITI | x | x | 28/05/2013 | 29/05/2013 | 8.68 | 01/06/2013 | 05/06/2013 | 1.80 | F
    845548455 | TUTU | AUTO |415435434343434 | 29/05/2013 | 30/05/2013 | 8.33 | x | x | x | F

    Pour l'algo, je pense pouvoir m'en sortir, mais je me demande:

    - N'existe t-il pas déjà une API pouvant réaliser cela?
    - Si non, qu'elle type d'objet utiliser pour le tableau final? tableau (un peu galère pour ajouter les colonnes non?), les array (avec des objets mais bon même problématique pour gérer l'ajout de colonne?)

    Bref, pourriez-vous m'orienter vers une solution efficace?

    Merci à vous.

    PS: Désolé pour l'alignement

    Christophe

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 113
    Points : 65
    Points
    65
    Par défaut
    Petit UP. Personne pour éclairer ma lanterne?

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    je ne connais pas d'API qui se charge déjà de ça.
    Pour le faire soi-même j'envisagerais deux méthodes :

    - Si tu as pas peur de la taille mémoire :

    -- Un LinkedHashSet<String> pour contenir les noms de colonne.
    -- Une ArrayList<Map<String, String>> pour contenir les lignes.
    Pour chaque ligne, parcourir les noms de colonne et pour chaque colonne, regarder si la ligne a une colonne de ce nom. Si non, mettre le x.

    - Si la taille mémoire peut être un problème :

    -- Construire d'abord un HashMap<String, Integer> associant chaque nom de colonne à un index unique de tableau. Pour ça il faut juste lire la première ligne de chaque fichier.
    -- Ensuite faire un ArrayList<String[]> ou similaire, en utilisant la Map pour savoir à quel index mettre chaque colonne.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 113
    Points : 65
    Points
    65
    Par défaut
    Salut,

    Je suis effectivement parti sur une solution de ce type.

    Faire un LinkedHashSet contenant les id de ma 1er facture et séparément un array de LinkedHashSet contenant mes lignes de valeurs.

    Ainsi, je compare les id de la prochaine facture séquentiellement par rapport au tableau LinkedHashSet.
    Si la colonne existe déjà, je créé une nouvelle ligne et je met la valeur, ainsi de suite.

    Si la colonne n'existe pas, je la rajoute dans le LinkedHashSet puis je boucle sur mon array de LinkedHashSet de ligne de valeur afin d'insérer une valeur vide à l'index correspondant.

    Voili voilo.

    Merci pour votre aide.

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insertion de colonne
    Par djam54 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/01/2006, 13h57
  2. Réponses: 3
    Dernier message: 14/12/2005, 15h17
  3. Prb Insert avec Colonne NOT NULL
    Par Sunny dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/12/2005, 12h59
  4. [Tableaux] Réoganiser liste en colonne et ancre
    Par Lomik dans le forum Langage
    Réponses: 9
    Dernier message: 26/10/2005, 11h06
  5. [langage] Comparaison de tableaux
    Par WetzlarMan dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2004, 14h08

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