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

【Java】ラムダ式でArrayListを反復処理するサンプルプログラムの書き方

はじめに

この記事では、ラムダ式を使ってArrayListを反復処理する方法について解説します。

ArrayListクラスは、java.utilパッケージに含まれる可変長(サイズ変更可能)の配列です。Javaの組み込み配列とArrayListの最大の違いは、組み込み配列は一度作成するとサイズを変更できないという点にあります。そのため、要素数が実行時に変わる可能性があるデータを扱う場合は、ArrayListを利用すると便利です。

入力と出力のイメージ

今回は複数の言語名を格納した文字列型のリストを作成し、ラムダ式によって順番に出力します。期待される出力は次のとおりです。

リストの内容: Java Python Scala Mysql Redshift

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 必要な変数を宣言する
ステップ3 - リストに格納する値を定義する
ステップ4 - ArrayListを作成する
ステップ5 - 「add」メソッドを使って要素を追加する
ステップ6 - リストの内容をコンソールに表示する
ステップ7 - 「forEach」メソッドとラムダ式で全要素を反復処理して表示する
ステップ8 - 処理を終了する

例1:mainメソッド内にすべての処理を記述する場合

まずは、すべての操作をmainメソッド内にまとめたシンプルな例から見ていきましょう。リストの表示には、従来のfor文ではなくforEachメソッドとラムダ式を使用します。

import java.util.ArrayList;
public class Demo {
   public static void main(String[] args) {
      System.out.println("必要なパッケージがインポートされました");
      ArrayList<String> input_list = new ArrayList<>();
      input_list.add("Java");
      input_list.add("Python");
      input_list.add("Scala");
      input_list.add("Mysql");
      input_list.add("Redshift");
      System.out.print("\nリストの内容:\n ");
      input_list.forEach(language -> System.out.print(language + " "));
   }
}

出力結果:

必要なパッケージがインポートされました

リストの内容:
Java Python Scala Mysql Redshift

例2:オブジェクト指向スタイルでメソッドに分割する場合

次に、処理を独立したメソッドへカプセル化したオブジェクト指向らしい例を紹介します。こちらはInteger型(整数)のリストをラムダ式で反復処理します。

import java.util.ArrayList;
public class Demo {
   public static void print(ArrayList<Integer> input_list) {
      System.out.print("\nリストの内容:\n ");
      input_list.forEach(elements -> System.out.print(elements + " "));
   }
   public static void main(String[] args) {
      System.out.println("必要なパッケージがインポートされました");
      ArrayList<Integer> input_list = new ArrayList<>();
      input_list.add(500);
      input_list.add(600);
      input_list.add(700);
      input_list.add(800);
      input_list.add(950);
      print(input_list);
   }
}

出力結果:

必要なパッケージがインポートされました

リストの内容:
500 600 700 800 950

ポイント解説

ラムダ式 language -> System.out.print(language) は、引数を受け取って処理を実行する簡潔な無名関数です。forEachメソッドに渡すことで、リストの各要素に同じ処理を適用でき、拡張for文よりも短く読みやすいコードになります。

また、メソッド参照を利用すればさらに簡潔に記述することも可能です。例えば input_list.forEach(System.out::println) のように書けば、各要素を1行ずつ順に出力できます。状況に応じて使い分けることで、より保守性の高いJavaコードを実現しましょう。


  1. Java 9のJShellでラムダ式を実装する方法をわかりやすく解説

    JShellとは何かJShellは、Java 9から導入されたJava初のREPL(Read-Eval-Print Loop)ツールであり、コマンドライン上でJavaプログラミング言語の要素を対話的に試すことができる強力な機能です。このツールを活用すれば、クラス全体を用意しなくても、個々のコード断片や機能を単独で素早くテストできます。JShellはコマンドライン上にシンプルで扱いやすいプログラミング環境を構築し、ユーザーが入力したコードを読み取り、その場で評価して結果を即座に出力します。また、ラムダ式とは、特定のクラスに属することなく生成できる関数のことで、JShell上でも簡単に定義して動作

  2. 【Java】正規表現を使って文字列内の母音を検出する方法

    Javaの正規表現では、角括弧 [ ](文字クラス)の中にマッチさせたい文字をまとめて記述できます。このメタ文字「[ ]」は、その中に指定したいずれか1文字に一致することを意味します。したがって、文字列に母音が含まれているかどうかを調べたい場合は、大文字・小文字の母音をすべて角括弧の中に列挙した次のパターンを使用します。[aeiouAEIOU]例1:PatternクラスとMatcherクラスを使う方法まず Pattern.compile() で正規表現をコンパイルし、Matcher オブジェクトを生成します。そして find() メソッドを呼び出すことで、入力文字列の中にパターンに一致する部分