Java でリストが特定の要素を含むかどうかをチェックする方法

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Java の List 内に特定の要素が存在するかどうかを確認する方法を学びます。データのコレクションを扱う際に、この一般的なタスクを実行するためのさまざまな方法を探ります。

まず、List インターフェースが提供する便利な contains() メソッドの使い方を学びます。その後、リストを手動で反復処理して要素を確認する方法を理解します。これは特定のシナリオで役立つことがあります。最後に、これらの確認を行う際にリスト内に null 要素が存在する場合の対処方法を説明します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") subgraph Lab Skills java/if_else -.-> lab-559945{{"Java でリストが特定の要素を含むかどうかをチェックする方法"}} java/for_loop -.-> lab-559945{{"Java でリストが特定の要素を含むかどうかをチェックする方法"}} java/strings -.-> lab-559945{{"Java でリストが特定の要素を含むかどうかをチェックする方法"}} java/collections_methods -.-> lab-559945{{"Java でリストが特定の要素を含むかどうかをチェックする方法"}} java/arraylist -.-> lab-559945{{"Java でリストが特定の要素を含むかどうかをチェックする方法"}} end

contains() を使用した要素の確認

このステップでは、contains() メソッドを使用して Java の List 内に特定の要素が存在するかどうかを確認する方法を学びます。これはデータのコレクションを扱う際の一般的なタスクです。

まず、~/project ディレクトリに ListContains.java という名前の新しい Java ファイルを作成しましょう。左側のファイルエクスプローラーで右クリックして「新しいファイル」を選択し、ListContains.java と入力することで作成できます。

次に、エディターで ListContains.java ファイルを開き、以下のコードを追加します。

import java.util.ArrayList;
import java.util.List;

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Mango");

        // Check if the list contains "Banana"
        boolean hasBanana = fruits.contains("Banana");
        System.out.println("Does the list contain Banana? " + hasBanana);

        // Check if the list contains "Grape"
        boolean hasGrape = fruits.contains("Grape");
        System.out.println("Does the list contain Grape? " + hasGrape);
    }
}

このコードを分解して説明しましょう。

  • import java.util.ArrayList;import java.util.List;:これらの行は、リストを扱うために必要なクラスをインポートします。
  • List<String> fruits = new ArrayList<>();:この行は、String オブジェクトを保持できる List の一種である新しい ArrayList を作成します。
  • fruits.add("...");:これらの行は、要素(果物の名前)をリストに追加します。
  • fruits.contains("Banana");:これがこのステップの核心です。contains() メソッドは fruits リストに対して呼び出されます。このメソッドは 1 つの引数を取り、それが確認したい要素です。要素がリスト内に見つかった場合は true を返し、そうでない場合は false を返します。
  • boolean hasBanana = ...;contains() の結果はブール型の変数(hasBanana または hasGrape)に格納されます。
  • System.out.println("...");:これらの行は結果をコンソールに出力します。

ListContains.java ファイルを保存します(Ctrl+S または Cmd+S)。

次に、WebIDE の下部にあるターミナルを開きます。~/project ディレクトリにいることを確認してください。そうでない場合は、cd ~/project と入力して Enter キーを押します。

javac コマンドを使用して Java コードをコンパイルします。

javac ListContains.java

エラーがなければ、~/project ディレクトリに ListContains.class ファイルが作成されます。

最後に、java コマンドを使用してコンパイルされた Java プログラムを実行します。

java ListContains

以下のような出力が表示されるはずです。

Does the list contain Banana? true
Does the list contain Grape? false

この出力は、contains() メソッドが「Banana」と「Grape」がリスト内に存在するかどうかを正しく識別したことを確認しています。

リストを手動でループ処理する

前のステップでは、contains() メソッドを使用して要素を確認しました。contains() は便利ですが、場合によってはリスト内の各要素を 1 つずつ調べる必要があります。これをリストの反復処理またはループ処理と呼びます。このステップでは、for ループを使用してこれを行う方法を学びます。

WebIDE のエディターで ~/project ディレクトリ内の ListContains.java ファイルを開きます。

既存のコードを変更して、fruits リストをループ処理し、各要素を出力します。既存の main メソッドを以下のコードに置き換えます。

import java.util.ArrayList;
import java.util.List;

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Mango");

        // Loop through the list using a for loop
        System.out.println("Printing fruits in the list:");
        for (int i = 0; i < fruits.size(); i++) {
            String fruit = fruits.get(i);
            System.out.println(fruit);
        }
    }
}

新しい部分を見てみましょう。

  • System.out.println("Printing fruits in the list:");:この行は、果物の一覧を出力する前にヘッダーを表示します。
  • for (int i = 0; i < fruits.size(); i++):これは標準的な for ループです。
    • int i = 0:カウンタ変数 i を 0 から始めます。プログラミングでは、多くの場合 0 からカウントを始めます。
    • i < fruits.size()ifruits リスト内の要素の総数より小さい限り、ループは続きます。fruits.size() は要素の数を返します。
    • i++:ループが実行されるたびに、i の値を 1 増やします。
  • String fruit = fruits.get(i);:ループ内で、fruits.get(i) はリスト内の現在の位置 i にある要素を取得します。この要素を fruit という String 変数に格納します。
  • System.out.println(fruit);:この行は現在の fruit をコンソールに出力します。

ListContains.java ファイルを保存します。

次に、ターミナルで変更したコードをコンパイルします。

javac ListContains.java

コンパイルが成功したら、プログラムを実行します。

java ListContains

以下の出力が表示されるはずです。

Printing fruits in the list:
Apple
Banana
Orange
Mango

これは、for ループがリストを正常に反復処理し、各果物を新しい行に出力したことを示しています。このようにリストを手動でループ処理することで、各要素の処理方法をより細かく制御でき、存在確認だけでなく、より複雑なタスクにも役立ちます。

リスト内の null 要素を処理する

現実の世界では、リストに「null」値が含まれることがあります。null 値は値が存在しないことを表します。null 値に対してチェックせずに操作を行おうとすると、プログラムは NullPointerException でクラッシュする可能性があります。このステップでは、リストをループ処理する際に null 要素をどう処理するかを学びます。

WebIDE のエディターで ~/project ディレクトリ内の ListContains.java ファイルを開きます。

コードを変更して、リストに null 要素を追加し、ループ内で null をチェックするようにします。既存の main メソッドを以下のコードに置き換えます。

import java.util.ArrayList;
import java.util.List;

public class ListContains {

    public static void main(String[] args) {
        // Create a List of strings
        List<String> fruits = new ArrayList<>();

        // Add some fruits to the list, including a null
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add(null); // Adding a null element
        fruits.add("Orange");
        fruits.add("Mango");

        // Loop through the list and handle null elements
        System.out.println("Printing fruits in the list (handling nulls):");
        for (int i = 0; i < fruits.size(); i++) {
            String fruit = fruits.get(i);

            // Check if the element is null before processing
            if (fruit != null) {
                System.out.println(fruit);
            } else {
                System.out.println("Found a null element");
            }
        }
    }
}

変更点を説明します。

  • fruits.add(null);:リストに null 値を追加しました。
  • if (fruit != null):ループ内で fruit を出力する前に、fruit 変数が null で ない ことをチェックする if 文を追加しました。
  • System.out.println(fruit);:この行は if ブロック内にあるため、fruit が null でない場合にのみ実行されます。
  • else { System.out.println("Found a null element"); }:この else ブロックは、fruit が null の場合に実行され、null 値自体を出力しようとせずにメッセージを出力します。

ListContains.java ファイルを保存します。

ターミナルで変更したコードをコンパイルします。

javac ListContains.java

コンパイルが成功したら、プログラムを実行します。

java ListContains

以下の出力が表示されるはずです。

Printing fruits in the list (handling nulls):
Apple
Banana
Found a null element
Orange
Mango

ご覧の通り、プログラムは null 要素を正しく識別して処理し、クラッシュすることなく動作します。Java プログラミングでは、エラーを防ぎ、プログラムをより堅牢にするために、null チェックを行うことが重要です。

まとめ

この実験では、Java の List が特定の要素を含むかどうかをチェックする方法を学びました。まず、組み込みの contains() メソッドを使用する最も簡単な方法を調べました。このメソッドは、要素の存在を効率的に判断し、boolean 型の結果を返します。

次に、リストを手動で反復処理してチェックを行う方法を詳しく調べました。これにより、contains() メソッドが内部でどのように動作するかをより深く理解することができました。最後に、これらのチェックを行う際にリスト内の null 要素を処理するという重要な点について取り上げ、堅牢でエラーのないコードを作成する方法を学びました。