25
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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行でスッキリ!

最後に

次回は、上記のサンプルを参考に、なぜラムダ式を適用できるのか?
あたりを考えてみようと思います。

25
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?