Concatene 2 txt dans une jtable

Résolu
laurent2403 Messages postés 96 Statut Membre -  
laurent2403 Messages postés 96 Statut Membre -
Bonjour, tout le monde!!!

j'ai un soucis ,j'aimerais concaténer 2 fichiers txt ,de sorte a pouvoir les afficher dans une jtable,le soucis c'est qu'il faut que mes 2 fichiers une fois concatene corresponde car mon premier est dans l'ordre alphabétique et l'autre, range du plus petit code ,au plus grand ,je vous laisse les 2 txt au cas ou ,j'avoue que je sèche....
merci a tous

fichier1

FR0000120404;Accor
FR0000120073;Air Liquide
FR0000130007;Alcatel-Lucent
FR0010220475;Alstom
LU0323134006;Arcelor Mittal
FR0000120628;Axa
FR0000131104;Bnp Paribas
FR0000120503;Bouygues
FR0000125338;Cap Gemini
FR0000120172;Carrefour
FR0000045072;Credit Agricole
FR0000120644;Danone
NL0000235190;Eads
FR0010242511;EDF
FR0000121667;Essilor Intl
FR0000133308;France Telecom
FR0010208488;GDF Suez
FR0000120537;Lafarge
FR0010307819;Legrand SA
FR0000120321;L'oreal
FR0000121014;Lvmh
FR0000121261;Michelin
FR0000120693;Pernod-Ricard
FR0000121501;Peugeot
FR0000121485;PPR
FR0000130577;Publicis Groupe
FR0000131906;Renault
FR0000073272;Safran
FR0000125007;Saint Gobain
FR0000120578;Sanofi
FR0000121972;Schneider Electric
FR0000130809;Societe Generale
NL0000226223;Stmicroelectronics
FR0000131708;Technip
FR0000120271;Total
FR0000124711;Unibail-Rodamco
FR0000120354;Vallourec
FR0000124141;Veolia Environ.
FR0000125486;Vinci
FR0000127771;Vivendi

fichier2

FR0000045072;24/07/12;3.05;3.06;2.94;2.94;15477996
FR0000073272;24/07/12;27.21;27.44;26.81;27.045;1054087
FR0000120073;24/07/12;88.50;88.75;87.01;87.01;1009318
FR0000120172;24/07/12;13.385;13.58;13.345;13.385;4580879
FR0000120271;24/07/12;35.655;35.74;34.83;34.83;5144960
FR0000120321;24/07/12;94.24;95.21;93.43;93.52;508762
FR0000120354;24/07/12;34.095;34.705;34.065;34.285;761493
FR0000120404;24/07/12;24.365;24.82;24.225;24.585;594685
FR0000120503;24/07/12;19.645;19.72;19.145;19.145;1013796
FR0000120537;24/07/12;34.295;34.84;34.03;34.545;989761
FR0000120578;24/07/12;61.59;62.02;61.10;61.10;2829891
FR0000120628;24/07/12;9.285;9.297;8.76;8.903;16273676
FR0000120644;24/07/12;48.85;49.11;48.00;48.00;2378158
FR0000120693;24/07/12;84.60;85.45;84.56;84.92;483706
FR0000121014;24/07/12;119.20;120.75;118.75;119.00;818782
FR0000121261;24/07/12;50.47;50.89;49.40;49.62;1248963
FR0000121485;24/07/12;108.70;109.20;107.25;107.40;215924
FR0000121501;24/07/12;6.561;6.58;6.22;6.24;5948107
FR0000121667;24/07/12;69.25;69.25;68.52;68.75;884886
FR0000121972;24/07/12;41.655;42.42;41.275;41.85;1992527
FR0000124141;24/07/12;8.646;8.686;8.391;8.424;3647508
FR0000124711;24/07/12;149.45;150.80;147.60;149.55;426813
FR0000125007;24/07/12;26.33;26.485;26.01;26.06;1969963
FR0000125338;24/07/12;26.24;27.00;25.965;26.685;1167874
FR0000125486;24/07/12;32.99;33.205;32.45;32.46;2569856
FR0000127771;24/07/12;14.565;14.81;14.50;14.50;3999575
FR0000130007;24/07/12;0.932;0.935;0.898;0.906;25340377
FR0000130577;24/07/12;40.00;40.00;39.09;39.105;1063574
FR0000130809;24/07/12;15.795;15.86;15.35;15.40;6172552
FR0000131104;24/07/12;27.095;27.16;26.205;26.46;6512267
FR0000131708;24/07/12;85.87;86.81;84.24;84.58;577048
FR0000131906;24/07/12;33.05;33.25;32.51;32.90;1950398
FR0000133308;24/07/12;10.49;10.50;10.22;10.23;8583467
FR0010208488;24/07/12;17.165;17.23;16.685;16.77;4885555
FR0010220475;24/07/12;25.065;25.575;24.80;24.99;1605652
FR0010242511;24/07/12;15.90;15.93;15.275;15.295;2929085
FR0010307819;24/07/12;26.175;26.22;25.94;25.965;700484
LU0323134006;24/07/12;11.775;11.90;11.615;11.735;6431081
NL0000226223;24/07/12;3.825;3.92;3.683;3.764;5175483
NL0000235190;24/07/12;27.955;28.52;27.635;28.445;1498888

2 réponses

  1. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonjour laurent2403,

    Dans les deux fichiers il y a exactement 40 lignes.
    Si j'ai bien compris, c'est au fichier 2 que tu veux faire correspondre les noms du fichiers 1 par le biais de l'ISIN ?
    0
    1. Heliotte Messages postés 1561 Statut Membre 92
       
      As-tu d'autre fichiers, dont la concaténation doit être pareille ?
      Dans quel langage ?
      0
    2. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
       
      Bonjour

      JTable, ce serait donc en Java
      0
      1. Heliotte Messages postés 1561 Statut Membre 92 > choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Désolé, je ne touche pas au Java.
        Bonne programmation.
        0
    3. laurent2403 Messages postés 96 Statut Membre 2
       
      beh merci quand même heliotte @+
      0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Il faudrait utiliser une Map pour faire coïncider les clés (premiers champs de tes lignes).

    Après au niveau des type valeurs je proposerais un String[][], pour avoir une liste des éléments (facile avec des split sur les points- virgules) pour chaque fichier à concaténer.

    Voici un exemple :

    // Récupération des données
        
    String[] nomFichiers = {"fichier1.txt", "fichier2.txt"};
    
    Map<String,String[][]> map = new TreeMap<String,String[][]>();
    
    for (int i=0; i<nomFichiers.length; i++)
    {
        Scanner sc = new Scanner(new File(nomFichiers[i]));
        while (sc.hasNextLine())
        {
            String[] tab = sc.nextLine().split(";");
            if (!map.containsKey(tab[0]))
                map.put(tab[0], new String[nomFichiers.length][]);
            map.get(tab[0])[i]=tab;
        }
        sc.close();
    }
    
    // Affichage
    
    for (Entry<String, String[][]> entry : map.entrySet())
    {
        System.out.println(entry.getKey());
        String[][] matrix = entry.getValue();
        for (int i=0; i<matrix.length; i++)
        {
            for (int j=0; j<matrix[i].length; j++)
                System.out.print(matrix[i][j]+"\t");
            System.out.println();
        }
        System.out.println();
    }
    
    // Fusion
    
    LinkedList<ArrayList<String>> data = new LinkedList<ArrayList<String>>();
    
    for (String[][] matrix : map.values())
    {
        ArrayList<String> liste = new ArrayList<String>();
        for (int i=0; i<nomFichiers.length; i++)
            liste.addAll(Arrays.asList(matrix[i]));
        data.add(liste);
    }
    
    //Affichage
    
    for (ArrayList<String> liste : data)
        System.out.println(liste);
    La confiance n'exclut pas le contrôle
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Remarque : on peut faire mes opérations récupération des données, et fusion, en une seule étape :

      String[] nomFichiers = {"fichier1.txt", "fichier2.txt"};
      
      Map<String,ArrayList<String>> map = new TreeMap<String,ArrayList<String>>();
      
      for (String nomFichier : nomFichiers)
      {
          Scanner sc = new Scanner(new File(nomFichier));
          while (sc.hasNextLine())
          {
              String[] tab = sc.nextLine().split(";");
              if (!map.containsKey(tab[0]))
                  map.put(tab[0], new ArrayList<String>());
              map.get(tab[0]).addAll(Arrays.asList(tab));
          }
          sc.close();
      }
      
      //Affichage
      
      for (ArrayList<String> liste : map.values())
          System.out.println(liste);
      0
    2. laurent2403 Messages postés 96 Statut Membre 2
       
      salut kx ,merci pour ta réponse ,je teste ça après le boulot ...
      0
    3. laurent2403 Messages postés 96 Statut Membre 2
       
      OK merci kx ça tourne du feu de dieu,maintenant j'aimerais afficher le résultat sur un fichier txt ,je vais essayer ,merci beaucoup pour ton aide @+
      0