Javaで配列やListの値を検索する方法が知りたい
containsメソッドの使い方を詳しく知りたい
配列やリストを扱う上で、値を検索したいと思ったことがありますよね。配列の要素の中に、探している値があるかどうか確かめる必要がある場合にです。
値を検索する方法として、Java言語の場合は、Arrays.asList.containsやList.contains、List.indexOfなどのメソッドを使う方法と正規表現を使う方法があります。
この記事では、配列の値の検索について
- Arrays.asList.containsで配列を検索する方法
- ArrayListでListを検索をする方法
- 正規表現を使う方法
など基本的な内容から応用的な内容についても解説していきます。
なお、Javaの記事については、こちらにまとめています。
Arrays.asList.containsで配列を検索する方法
配列内に特定の値が含まれているかを確認する方法にcontainsメソッドを使う方法があります。
containsメソッドを使用するにはjava.util.Arraysをインポートする必要があります。containsの引数には検索したい値を渡します。存在する場合は真となり条件内の処理を通ります。
asListについてですが引数に渡した配列をList型配列に変換して返すという処理になります。
つまり後述するList.containsの手法と同じ使い方になるということです。
数値を検索する場合
まずは数値型の配列の検索についてサンプルコードを見てみましょう。
import java.util.Arrays; public class Main { public static void main(String[] args) { Integer foo[] = {10, 20, 30}; if(Arrays.asList(foo).contains(30)) { System.out.println("配列内に値が存在しています。"); } } }
実行結果:
配列内に値が存在しています。
このサンプルコードでは、数値型の配列(Integer)に30が含まれている場合は文字を表示しています。
文字列を検索する場合
次に文字列の検索についてもサンプルコードを見てみましょう。
import java.util.Arrays; public class Main { public static void main(String[] args) { String bar[] = {"FOO", "BAR", "HOGE"}; if(Arrays.asList(bar).contains("HOGE")) { System.out.println("配列内に値が存在しています。"); } } }
実行結果
配列内に値が存在しています。
このサンプルコードでは、文字列型の配列に”HOGE”が含まれている場合は文字を表示しています。
使い方自体は変わらず数値が文字列に変わっただけですね。
ArrayListでListを検索をする方法
では続いて、ArrayListで文字列を検索する場合はどうすればよいかを見てみましょう。
なお、ArrayListを使用するためにはjava.util.ArrayListをインポートする必要があります。
List.containsを用いる場合
前項でのcontainsを使った方法と一緒です。
なお、Listを使用するためにはjava.util.Listをインポートする必要があります。
それではサンプルコードで確認していきましょう。
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> foo = new ArrayList<Integer>(); foo.add(10); foo.add(20); foo.add(30); if(foo.contains(10)) { System.out.println("配列内に値が存在しています。"); } } }
実行結果
配列内に値が存在しています。
このサンプルコードのように、asListで変換が入らない分こちらのほうがいいでしょう。
List.indexOfを用いる場合
今度はindexOfメソッドを使ってみます。
今までの内容とは少し違います。
indexOfメソッドはArrayList中の値を検索し、値を発見した場合はそのインデックスを返します。
List内に存在しない値を引数に渡すと-1が返ってきます。
ではサンプルコードで使い方を見てみましょう。
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> foo = new ArrayList<Integer>(); foo.add(10); foo.add(20); foo.add(30); System.out.println("10のインデックスは" + foo.indexOf(10) + "です"); System.out.println("20のインデックスは" + foo.indexOf(20) + "です"); System.out.println("30のインデックスは" + foo.indexOf(30) + "です"); System.out.println("40のインデックスは" + foo.indexOf(40) + "です"); } }
実行結果:
10のインデックスは0です 20のインデックスは1です 30のインデックスは2です 40のインデックスは-1です
この実行結果を見ていただくことでどのような値が返ってくるかが分かるかと思います。
-1が返ってきたら配列に値が存在しないんだと言うことを覚えておいて下さい。
正規表現を使う方法
正規表現を使うことで特定の文字列を抽出、操作することができます。
正規表現については下記の記事で詳しく解説していますのでぜひご覧ください!
まとめ
ここでは、値の検索方法について解説していきましたがいかがでしたか?
基本はcontainsメソッドを使うことで配列内に値が含まれているかどうかを調べることができます。そしてどこに配列の値があるかを調べたい場合はindexOfを使うことで場所を知ることができます。
検索方法自体は難しくないかと思いますので、忘れてしまった場合はこの記事を参考にして頂ければ幸いです!