HOWTO · Java

Java で配列に特定の値が含まれていることを確認する

この記事では、配列に Java の要素が含まれているかどうかを判別する方法を紹介します。

配列は、明確な順序で配置された要素の体系的なコレクションです。内部的には、配列要素は連続したメモリ位置に格納されます。

配列内の要素を検索するには、さまざまな方法があります。さまざまな方法により、時間と複雑さが異なります。以下は、配列内の要素を検索するためのいくつかのリストされた方法です。

Java で array.contains() メソッドを使用して、配列に特定の値が含まれていることを確認する

以下のコードブロックでは、いくつかの事前定義された値を使用して配列 arr をインスタンス化する必要があります。次に、検索する必要のある文字列を初期化します。

Arrays は、配列を操作するためのさまざまなメソッドを持つクラスです。このクラスには静的ファクトリメソッドとフィールドが含まれており、これらは配列内の要素の検索と並べ替えに役立ちます。

asList() メソッドは、Arrays クラスの静的メソッドです。パラメータから取得した指定された配列の固定リストを返します。

contains()List インターフェースのメソッドです。これはパラメータとして要素を取り、この引数をリストに存在する要素と比較します。指定された要素がリストに存在する場合はブール値 true を返し、いずれの場合も false を返します。指定された要素のタイプがこのリストと互換性がない場合、メソッドは ClassCastException をスローし、指定された値が null であり、このリストが null 値を許可しない場合は NullPointerException をスローします。

package findInList;

import java.util.Arrays;

public class FindAValueInArray {
  public static void main(String[] args) {
    String[] arr = new String[] {"1", "2", "3"};
    String stringToSearch = "2";
    System.out.println(Arrays.asList(arr).contains(stringToSearch));
  }
}

上記のプログラムの出力は以下のとおりです。

true

Java 8 ストリームを使用して、配列に特定の値が含まれていることを確認する

上記のコードブロックでは、最初の 2 行は最初のコードの行と似ています。ここでは、Arrays クラスの stream メソッドを使用して、配列のストリームを作成しました。このメソッドは、指定された配列をソースとして持つシーケンシャルストリームを返します。Stream クラスには、anyMatch() という名前の関数があります。このメソッドは、入力として predicate を取ります。

Predicate は、単一の引数関数を取り、ブール値を返す関数型インターフェースです。これには、指定された引数の述語を評価する単一の test(T t) メソッドが含まれています。ストリームのいずれかの要素が指定された述語と一致する場合は true を返し、そうでない場合は false 値を返します。

package findInList;

import java.util.Arrays;

public class FindAValueInArray {
  public static void main(String[] args) {
    String[] arr = new String[] {"1", "2", "3"};
    String stringToSearch = "2";
    System.out.println(Arrays.stream(arr).anyMatch(s -> s.equals(stringToSearch)));
  }
}

上記のコードの出力は、最初のコードと同じです。

単純な for ループを使用して、配列に特定の値が含まれていることを確認する

以下のコードブロックでは、従来の for ループを使用して配列を反復処理しています。for ループは expression1 で初期化され、カウンター値は 0 になります。ここで、カウンター値が配列の長さと比較されます。カウンター変数が定義された配列の長さよりも小さい場合、コードブロック内のステートメントが実行されます。

for ブロック内で、String クラスの equals メソッドを使用して配列の各要素を比較します。ステータスが true と評価された場合、for ループの実行を中断するために break キーワードが使用されます。見つからない場合、コードは配列内の要素の数と同じ回数実行されます。

ループの後、要素がリストで検索された場合、print ステートメントはステータス変数の値を true と評価します。それ以外の場合、false 値を出力します。

package findInList;

public class FindAValueInArray {
  public static void main(String[] args) {
    String[] arr = new String[] {"1", "2", "3"};
    String stringToSearch = "2";
    boolean status = false;
    for (int i = 0; i < arr.length; i++) {
      status = arr[i].equals(stringToSearch);
      if (status)
        break;
    }
    System.out.println(status);
  }
}

出力は、最初のコードで指定されたものと同じです。