Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java入門】ラムダ式をメソッド引数として渡す方法をわかりやすく解説


本記事では、Javaでラムダ式をメソッド引数として渡す方法について解説します。ラムダ式とは、パラメータを受け取り、処理結果を返す短いコードブロックのことで、Java 8から導入された機能です。従来の匿名クラスを簡潔に記述できるため、コレクション操作やコールバック処理などで広く活用されています。

以下に具体例を示します。

入力

("Apple", "Orange", "Grapes")

出力

elppA, egnarO, separG

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 必要なパッケージをインポートする
ステップ3 - mainメソッド内でArrayListを定義し、初期データを格納する
ステップ4 - 定義したArrayListをコンソールに表示する
ステップ5 - forEachメソッドにラムダ式を引数として渡し、各要素を順に処理する
ステップ6 - ラムダ式の中で、各文字列の文字を末尾から先頭へ逆順に連結して新しい文字列を生成する
ステップ7 - 反転した文字列をコンソールに出力する

例1

ここでは、あらかじめ定義した果物名のリストに対して、forEachメソッドとラムダ式を使い、各文字列を反転させてコンソールに表示します。

import java.util.ArrayList;
import java.util.Arrays;
public class Main {
   public static void main(String[] args) {
      ArrayList<String> Fruits = new ArrayList<>(Arrays.asList("Apple", "Orange", "Grapes"));
      System.out.println("The ArrayList is defined as : " + Fruits);
      System.out.print("The Reversed ArrayList is: ");
      Fruits.forEach((e) -> {
         String result = "";
         for (int i = e.length()-1; i >= 0 ; i--)
           result += e.charAt(i);
         System.out.print(result + ", ");
      });
   }
}

出力

The ArrayList is defined as : [Apple, Orange, Grapes]
The Reversed ArrayList is: elppA, egnarO, separG,

例2

次に、スポーツ名のリストに対して同じ処理を適用した例です。ラムダ式として処理ロジックを引数に渡すことで、異なるデータに対しても同じコード構造をそのまま再利用できる点が大きなメリットです。

import java.util.ArrayList;
import java.util.Arrays;
public class Main {
   public static void main(String[] args) {
      ArrayList<String> Games = new ArrayList<>(Arrays.asList("Football", "Cricket", "Baseball"));
      System.out.println("The ArrayList is defined as : " + Games);
      System.out.print("The Reversed ArrayList is: ");
      Games.forEach((e) -> {
         String result = "";
         for (int i = e.length()-1; i >= 0 ; i--)
            result += e.charAt(i);
         System.out.print(result + ", ");
      });
   }
}

出力

The ArrayList is defined as : [Football, Cricket, Baseball]
The Reversed ArrayList is: llabtooF, tekcirC, llabesaB,

まとめ

このように、forEachメソッドの引数としてラムダ式を直接渡すことで、反復処理のロジックを非常に簡潔に記述できます。ラムダ式の基本構文は「(引数) -> { 処理 }」であり、関数型インターフェースを受け取るメソッドであればどこでも利用可能です。文字列の反転以外にも、フィルタリングや変換などさまざまな処理に応用できるので、ぜひ実際にコードを書いて試してみてください。

  1. mainメソッドなしでJavaプログラムを実行できますか?staticブロックを使った方法を解説

    結論から言うと、staticブロック(静的初期化ブロック)を利用すれば、mainメソッドなしでもJavaプログラムを実行することが可能です。 Javaにおけるstaticブロックとは、クラスがクラスローダー(ClassLoader)によってメモリにロードされるタイミングで、一度だけ実行される一連のステートメントの集まりです。「静的初期化ブロック(Static Initialization Block)」とも呼ばれ、スタックメモリに直接展開されるという特徴があります。 サンプルコード class StaticInitializationBlock{ static{ Sys

  2. Java 8におけるインターフェースの機能強化 〜デフォルトメソッドと静的メソッド〜

    Java 8で導入されたインターフェースの新機能Java 8では、インターフェースに「デフォルトメソッド(default method)」という新しい概念が導入されました。この機能は後方互換性(下位互換性)を維持するために追加されたもので、既存のインターフェースを壊すことなく、Java 8の強力なラムダ式の恩恵を受けられるようにすることを目的としています。なぜデフォルトメソッドが必要だったのか例えば、従来のListやCollectionインターフェースにはforEachメソッドの宣言が存在しませんでした。ここで単純にforEachメソッドをインターフェースへ追加すると、これらのインターフェース