CUBは子供の白熊

Java SE 8 実践プログラミングの練習問題を解く

第1章 ラムダ式とは : 問題 4 : 複雑な Comparator をラムダ式で書く

問題 4

Fileの配列が与えられたとき、その配列をディレクトリ, ファイルの順に(ディレクトリ, ファイルの各々ではパス名で)ソートする処理をラムダ式を使って書け

解答

Windows の Explorer のような表示順ってことだね。

File[] files = { 〜 };
Arrays.sort(files, (first, second) -> {
    if (first.isDirectory() && !second.isDirectory())
        return -1;
    else if (!first.isDirectory() && second.isDirectory())
        return 1;
    else
        return first.getPath().compareTo(second.getPath());
});

ラムダ式は、ロジックが複雑になったら中かっこ{}を使えばいいので楽ちんです。