Concatene 2 txt dans une jtable

Résolu
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. 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 ?
    1. As-tu d'autre fichiers, dont la concaténation doit être pareille ?
      Dans quel langage ?
    2. Modérateur
      Bonjour

      JTable, ce serait donc en Java
    3. @choubakaDésolé, je ne touche pas au Java.
      Bonne programmation.
    4. beh merci quand même heliotte @+
  2. Modérateur
    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
    1. Modérateur
      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);
    2. salut kx ,merci pour ta réponse ,je teste ça après le boulot ...
    3. 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 @+