Java:ラムダ式とストリームとは?

目次

ラムダ式とストリーム

ラムダ式とストリームは、Java 8で導入された非常にパワフルな機能です。
これらは、コードを短く、わかりやすく、効率的にするためのツールとして使われます。

ラムダ式(Lambda Expressions)

ラムダ式は、無名の関数を表現する方法です。
通常のメソッドと同じようにパラメータリスト、メソッド本体、戻り値がありますが、一般的には匿名で定義された小さなメソッドと考えることができます。

例えば、以下のようなリストがあるとします。

List<String> fruits = Arrays.asList("Apple", "Banana", "Orange", "Grapes");

このリスト内の各要素を出力する場合、ラムダ式を使用することができます。

fruits.forEach(fruit -> System.out.println(fruit));

この例では、forEach メソッドを使ってリスト内の各要素に対してラムダ式を実行し、各フルーツ名をコンソールに出力しています。ラムダ式では、fruit は引数を表し、System.out.println(fruit) はその引数を処理する本体です。

ストリーム(Streams)

ストリームは、コレクションや配列に対して、高水準の操作を提供するための新しい抽象化された要素です。ストリームは、複数の要素に対してフィルタリング、マッピング、ソートなどの操作を行うことができます。

先ほどのフルーツのリストを例に考えてみましょう。

List<String> fruits = Arrays.asList("Apple", "Banana", "Orange", "Grapes");
// フィルタリングと出力
fruits.stream()
      .filter(fruit -> fruit.startsWith("A"))
      .forEach(fruit -> System.out.println(fruit));

この例では、stream() メソッドを使ってリストをストリーム化し、filter メソッドで条件に合う要素だけを取り出し、forEach メソッドでそれらの要素を出力しています。

利点と注意点

ラムダ式とストリームは、コードをより簡潔かつ効率的に記述できることが大きな利点です。しかし、適切な使い方をしないと、可読性や保守性が低下する可能性もあります。また、並列処理や大規模なデータ操作にも利用できるため、適切に活用することが重要です。

目次