Posted at

[java8] 1回目:ラムダ式で降順ソートを書いてみよう

More than 3 years have passed since last update.

java8で新規に追加されたラムダ式を、まずは触ってみるのが目的です。


事前準備

java8が必要なので、まだの場合はインストールしましょう。

インストールはココ


ラムダ式って何だろう


ラムダ式を使用することでこれまで匿名クラスとして実装していたような処理を簡単に記述できるようになる

また、コレクションAPIでもラムダ式を活用した新たなAPIが追加されているなど、

ラムダはJava 8において非常に大きな役割を果たしている。


と書いてあります。がよく分からないですね(^^;

サンプルコードを見ながら考えてみることにします。


サンプルコード

プログラミング言語名のリストを、降順に並び替えて出力するサンプルです。

Comparatorインタフェースの辺りがキモですね。

public class SmapleCompare {

/**
* プログラミング言語を降順に並べるサンプル
*/

public static void main(String[] args) {
// 1.7までの書き方
List<String> list = createList();
list.sort(new Comparator<String>() {

@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
});
printList(list);

// ラムダ式を使った書き方
list = createList();
list.sort((o1, o2) -> o2.compareTo(o1));
printList(list);
}

private static List<String> createList() {
return Arrays.asList("C++", "java", "scala", "php");
}

private static void printList(List<String> list) {
for(String program : list) {
System.out.println(program);
}
System.out.println();
}
}

記述量がだいぶ短くなっていますね。

ついでに、出力部分もラムダ式で置き換えてみましょう。

    private static void printList(List<String> list) {

list.forEach(program -> System.out.println(program));
}

1行でスッキリ!


最後に

次回は、上記のサンプルを参考に、なぜラムダ式を適用できるのか?

あたりを考えてみようと思います。