Java | Comparator を使った実務例(ファイル名・日付でソートなど)

Java Java
スポンサーリンク

Comparator は「並べ替えのルール」を自由に定義できるので、実務では ファイル名順・日付順・サイズ順などのソートに多用されます。ここでは代表的な例をいくつか紹介します。


例1:ファイル名でソート

シナリオ

フォルダ内のファイルを名前順(アルファベット順)に並べたい。

コード例

import java.io.File;
import java.util.*;

public class FileNameSort {
    public static void main(String[] args) {
        File dir = new File("C:/example"); // 任意のフォルダ
        File[] files = dir.listFiles();

        Arrays.sort(files, Comparator.comparing(File::getName));

        for (File f : files) {
            System.out.println(f.getName());
        }
    }
}
Java
  • ポイント: Comparator.comparing(File::getName) で「ファイル名」を基準にソート。
  • 実務では「拡張子別に並べたい」「大文字小文字を無視したい」などの応用も可能。

例2:更新日でソート

シナリオ

ファイルを「更新日時の新しい順」に並べたい。

コード例

import java.io.File;
import java.util.*;

public class FileDateSort {
    public static void main(String[] args) {
        File dir = new File("C:/example");
        File[] files = dir.listFiles();

        Arrays.sort(files, Comparator.comparingLong(File::lastModified).reversed());

        for (File f : files) {
            System.out.println(f.getName() + " : " + new Date(f.lastModified()));
        }
    }
}
Java
  • ポイント: File::lastModified で更新日時を取得。
  • .reversed() をつけると「新しい順」になる。

例3:ファイルサイズでソート

シナリオ

ファイルを「サイズの大きい順」に並べたい。

コード例

import java.io.File;
import java.util.*;

public class FileSizeSort {
    public static void main(String[] args) {
        File dir = new File("C:/example");
        File[] files = dir.listFiles();

        Arrays.sort(files, Comparator.comparingLong(File::length).reversed());

        for (File f : files) {
            System.out.println(f.getName() + " : " + f.length() + " bytes");
        }
    }
}
Java
  • ポイント: File::length でファイルサイズを取得。
  • 大きい順に並べることで「容量の大きいファイルを探す」などに役立つ。

例4:複合条件ソート(実務でよく使う)

シナリオ

「更新日が新しい順」→「同じ日ならファイル名順」で並べたい。

コード例

import java.io.File;
import java.util.*;

public class FileMultiSort {
    public static void main(String[] args) {
        File dir = new File("C:/example");
        File[] files = dir.listFiles();

        Arrays.sort(files, Comparator
            .comparingLong(File::lastModified).reversed()
            .thenComparing(File::getName));

        for (File f : files) {
            System.out.println(f.getName() + " : " + new Date(f.lastModified()));
        }
    }
}
Java
  • ポイント: thenComparing を使うと「複数条件」でソートできる。
  • 実務では「日付→名前」「部署→社員番号」など複合条件がよく登場する。

まとめ

  • Comparator は「並べ替えルール」を自由に作れる。
  • 実務ではよく使うのは:
    • ファイル名順
    • 更新日順
    • サイズ順
    • 複合条件(更新日+名前など)
  • Comparator.comparingthenComparing を組み合わせると柔軟なソートが可能。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました