Javaのリストから特定の要素を検索する方法を完全解説(contains・indexOf)
生徒
「JavaのArrayListにデータを入れたあと、特定の値が入っているか調べたいんですが、どうやるんですか?」
先生
「Javaのリストには、要素を検索するための便利なメソッドが用意されています。」
生徒
「for文で一つずつ調べるしかないと思っていました。」
先生
「containsやindexOfを使うと、もっと簡単に検索できますよ。」
生徒
「初心者でも分かるように教えてほしいです。」
先生
「では、Javaのリスト検索の基本から順番に説明していきます。」
1. Javaのリストで要素を検索するとは?
Javaのリストとは、複数のデータを順番に管理できるデータ構造です。 ArrayListやLinkedListなどが代表的で、業務システムやWebアプリでも頻繁に使われます。
リストを使っていると、「この値がリストの中に存在するか知りたい」 「どの位置にあるのか調べたい」といった場面が必ず出てきます。 そのときに活躍するのが、containsメソッドとindexOfメソッドです。
2. containsメソッドで要素の存在を確認する
containsメソッドは、指定した要素がリストの中に含まれているかどうかを調べるためのメソッドです。 戻り値は真偽値で、存在すればtrue、存在しなければfalseが返されます。
「あるかどうか」だけを知りたい場合には、containsを使うのが最も簡単で分かりやすい方法です。 Java初心者でも直感的に理解しやすいのが特徴です。
import java.util.ArrayList;
import java.util.List;
public class ContainsExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("りんご");
fruits.add("みかん");
fruits.add("ばなな");
boolean result = fruits.contains("みかん");
System.out.println(result);
}
}
true
3. containsメソッドを使うときの注意点
containsメソッドは、equalsメソッドを使って要素の比較を行います。 そのため、文字列の場合は内容が一致していればtrueになります。
独自クラスをリストに入れている場合は、 equalsメソッドを正しく実装していないと期待通りの結果にならないことがあります。 初心者のうちは、StringやIntegerなどの基本的な型で使うと安心です。
4. indexOfメソッドで要素の位置を調べる
indexOfメソッドは、指定した要素がリストの何番目にあるかを調べるためのメソッドです。 インデックス番号は0から始まる点に注意が必要です。
要素が存在する場合はその位置が返され、 存在しない場合はマイナス1が返されます。 「どこにあるか」を知りたい場合に便利なメソッドです。
import java.util.ArrayList;
import java.util.List;
public class IndexOfExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("りんご");
fruits.add("みかん");
fruits.add("ばなな");
int index = fruits.indexOf("ばなな");
System.out.println(index);
}
}
2
5. indexOfメソッドの注意点
indexOfは、最初に見つかった要素の位置を返します。 同じ値が複数入っている場合でも、最初の位置しか返されません。
また、要素が存在しない場合はマイナス1が返るため、 そのままgetメソッドなどに使うとエラーの原因になります。 必ず結果をチェックしてから使うことが大切です。
6. containsとindexOfの使い分け
containsとindexOfは似ていますが、用途が異なります。 存在するかどうかだけを確認したい場合はcontains、 位置を知りたい場合はindexOfを使うのが基本です。
無理にどちらか一方に統一する必要はなく、 処理内容に応じて使い分けることがJavaプログラミングでは重要です。
7. for文で検索する方法との違い
for文を使って一つずつ比較する方法でも検索は可能ですが、 containsやindexOfを使うとコードが短くなり、可読性も向上します。
Javaには便利な標準メソッドが多く用意されているため、 まずはそれらを活用することが、初心者から一歩成長する近道です。
8. リスト検索を理解するメリット
Javaのリスト検索を理解すると、入力チェックや重複判定など、 実務でよく使う処理がスムーズに書けるようになります。
containsやindexOfは小さな機能ですが、 Javaの基礎力を支える重要な知識です。 繰り返し使って、自然に使いこなせるようになりましょう。