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);
}
}
出力は、最初のコードで指定されたものと同じです。