[Java] 32 ArrayListの要素を並べ替え

前回の続きです。

結合させたレースデータの要素を並べ替えます。Pythonではpandasでデータフレームに変換してカラム名でreindexの簡単な処理です。

今回は各要素に付番し、呼び出す順番にインデックス番号を並べたリストを作って要素を取り出しました。原始的な方法です。

これでCSV化あるいはHTML化の準備が整いましたが、ざっと調べた感じでは一筋縄ではいかなさそうです。

<第3メソッドまでは省略>

// 第4メソッド
public static void toCSV(ArrayList<ArrayList<String>> raceListCon) {
    System.out.println("第4メソッド内出力 " + raceListCon);

    ArrayList<ArrayList<String>> raceListConSorts = new ArrayList<ArrayList<String>>();
    Integer[] indexes = {0,1,5,2,3,9,10,16,17,8,12,11,4,6,13,14,15,18,7,19,20};
    for (ArrayList<String> contents : raceListCon){
        ArrayList<String> raceListConSort = new ArrayList<String>();
        for (Integer i:indexes){
            String element = contents.get(i);
            raceListConSort.add(element);}

        raceListConSorts.add(raceListConSort);}

    ArrayList<String> columnNames = new ArrayList<String>();
    String[] columnName = {"日付","開催","天候","レース","レース名","枠番","馬番","単勝","人気","着順","騎手","斤量","コース","馬場状態","タイム","通過","上り","馬体重","1着馬","賞金","raceID"};

    for (String colname : columnName){
        columnNames.add(colname);}

    System.out.println(columnNames);

    raceListConSorts.add(0,columnNames);
    System.out.println(raceListConSorts);}}
--------------------------------------------------

出力
--------------------------------------------------
第4メソッド内出力 [[2020-10-25, 4回京都6日目, 5 R, 2歳新馬, 芝右 外1800m, 天候 : 晴, 芝 : 良, シャフリヤール, 1, 7, 13, 55.0, 福永祐一, 1:49.9, 6-4, 34.6, 2.3, 1, 450(0), 700.0, r202008040605], [2021-02-14, 1回東京6日目, 11 R, 第55回共同通信杯(G3), 芝左1800m, 天候 : 晴, 芝 : 良, エフフォーリア, 3, 8, 11, 56.0, 福永祐一, 1:48.0, 7-8-8, 33.4, 4.9, 2, 448(-2), 956.1, r202105010611], [2021-03-27, 2回阪神1日目, 11 R, 第68回毎日杯(G3), 芝右 外1800m, 天候 : 晴, 芝 : 良, シャフリヤール, 1, 6, 6, 56.0, 川田将雅, 1:43.9, 4-4, 34.1, 2.9, 2, 448(0), 3,833.6, r202109020111]]
[日付, 開催, 天候, レース, レース名, 枠番, 馬番, 単勝, 人気, 着順, 騎手, 斤量, コース, 馬場状態, タイム, 通過, 上り, 馬体重, 1着馬, 賞金, raceID]
[[日付, 開催, 天候, レース, レース名, 枠番, 馬番, 単勝, 人気, 着順, 騎手, 斤量, コース, 馬場状態, タイム, 通過, 上り, 馬体重, 1着馬, 賞金, raceID], [2020-10-25, 4回京都6日目, 天候 : 晴, 5 R, 2歳新馬, 7, 13, 2.3, 1, 1, 福永祐一, 55.0, 芝右 外1800m, 芝 : 良, 1:49.9, 6-4, 34.6, 450(0), シャフリヤール, 700.0, r202008040605], [2021-02-14, 1回東京6日目, 天候 : 晴, 11 R, 第55回共同通信杯(G3), 8, 11, 4.9, 2, 3, 福永祐一, 56.0, 芝左1800m, 芝 : 良, 1:48.0, 7-8-8, 33.4, 448(-2), エフフォーリア, 956.1, r202105010611], [2021-03-27, 2回阪神1日目, 天候 : 晴, 11 R, 第68回毎日杯(G3), 6, 6, 2.9, 2, 1, 川田将雅, 56.0, 芝右 外1800m, 芝 : 良, 1:43.9, 4-4, 34.1, 448(0), シャフリヤール, 3,833.6, r202109020111]]