質問: ### 実現したいこと 最大400万行ぐらいあるログファイルを、各行の先頭についている日時の昇順でソートしたいです。 現在は以下のソースコードなのですが、日時が同じ行については順序を変えないように実装したいです。 ログ項目間はタブ区切りとなっています。 どのように記述するべきでしょうか。 ### 現在のソースコード public ArrayList dateSort(ArrayList outputLogList) { Collections.sort(outputLogList); return outputLogList; } ### リストの中身 2016/03/30-02:24:39 111.221.3.3 - - [30/Mar/2016:02:24:39 +0900] 215 "GET /checkWeb_ext.html HTTP/1.0" 404 215 2016/03/30-02:24:40 111.221.3.3 - - [30/Mar/2016:02:24:40 +0900] 351 "GET /checkWeb_ext.html HTTP/1.0" 404 215 2016/03/30-02:24:40 111.221.3.4 - - [30/Mar/2016:02:24:40 +0900] 290 "GET /checkWeb_int.html HTTP/1.0" 404 215 2016/03/30-02:24:40 111.221.3.4 - - [30/Mar/2016:02:24:40 +0900] 153 "GET /checkWeb_ext.html HTTP/1.0" 404 215 2016/03/30-02:24:40 111.221.3.3 - - [30/Mar/2016:02:24:40 +0900] 237 "GET /checkWeb_int.html HTTP/1.0" 404 215 2016/03/30-02:24:41 111.221.3.3 - - [30/Mar/2016:02:24:41 +0900] 324 "GET /checkWeb_int.html HTTP/1.0" 404 215 2016/03/30-02:24:41 111.221.3.4 - - [30/Mar/2016:02:24:41 +0900] 171 "GET /checkWeb_ext.html HTTP/1.0" 404 215 2016/03/30-02:24:41 111.221.3.4 - - [30/Mar/2016:02:24:41 +0900] 334 "GET /checkWeb_int.html HTTP/1.0" 404 215 2016/03/30-02:24:44 111.221.3.3 - - [30/Mar/2016:02:24:44 +0900] 221 "GET /checkWeb_ext.html HTTP/1.0" 404 215 2016/03/30-02:24:45 111.221.3.3 - - [30/Mar/2016:02:24:45 +0900] 218 "GET /checkWeb_ext.html HTTP/1.0" 404 215
回答: 先頭の日時を表す文字列の順番を考えると、当然ですが早い日時ほど小さい数字になります。なので、単純に日時順に並べるならそれでもいいかと。 ただし、1秒以内に並んでいるログを並べる際、後に続く文字列で評価されることになるので、それで都合が悪ければ要検討でしょうか。