Javaエンジニアとして働いていると文字列などに特定の文字が含まれているか判断したい時があります。その時に役に立つ関数がcontainsメソッドで実際の開発現場でも利用します。
今回はJavaでのcontainsメソッドの使い方を触れていく中でnullのケースも含めてご紹介します。文字列、リスト、nullの3パターンを紹介するので参考にしてください。
nullに対する意識がないとエラーの原因になるから、気をつけるんやで!
記事の信頼性:エンジニア3年目の「しう」がJavaのcontainsメソッドについて記事を書いています。
containsメソッドとは?【Java】
JavaではStringクラスでcontainsメソッドが用意されており、利用することができます。利用時には引数にString型を指定して、戻り値はboolean型です。引数に指定した文字列が含まれている場合はtrueを返し、含まれていない場合はfalseを返します。
プログラミングの学習時には公式サイトで1次情報を確認することも大切なので、Oracleの公式サイト(String型)も確認してください。次の「containsメソッドの使い方」で具体的な利用方法を見ていきます。
containsメソッドの使い方
containsメソッドの使い方について下記の3パターンについて見ていきます。文字列以外のパターンもあり注意点もあるため気をつけていきましょう。
- 文字列の場合
- リストの場合
- 空文字、nullの場合
文字列の場合
文字列の場合のcontainsメソッドの使い方についてです。実際の使い方としては次のような利用方法となります。wordに大文字のPが含まれているため、実行結果でtrueとなっています。
var word = "Programming";
System.out.println("Pの検索結果:" + word.contains("P"));
// Pの検索結果:true
大文字小文字の区別はしているため、次のようにcontains(“p”)の場合はfalseとなります。
var word = "Programming";
System.out.println("pの検索結果:" + word.contains("p"));
// pの検索結果:false
containsメソッドでは引数の文字列は2文字以上でも利用できます。実行した場合は次のようになります。”Programming”という単語に”Pr”は含まれているのでtrueが返りますが、”Pa”は含まれていないため、contains(“Pa”)を利用した場合はfalseが返ってきます。
var word = "Programming";
System.out.println("Prの検索結果:" + word.contains("Pr"));
// Prの検索結果:true
System.out.println("Paの検索結果:" + word.contains("Pa"));
// Paの検索結果:false
リストの場合
リストでcontainsメソッドを利用する場合は下記のようになります。文字列の時と同様、指定した文字列が含まれていればtrue、含まれていなければfalseを返します。
var list = new ArrayList<String>();
list.add("あいうえお");
list.add("かきくけこ");
list.add("さしすせそ");
System.out.println("かきくけこの検索結果:" + list.contains("かきくけこ"));
// かきくけこの検索結果:true
System.out.println("たちつてとの検索結果:" + list.contains("たちつてと"));
// たちつてとの検索結果:false
ただ、フレームワークの1つであるSpringではCollectionUtilsクラスにcontainsメソッドが用意されており、そちらを利用するとnullチェックをしてくれるためCollectionUtilsクラスのcontainsメソッドを利用する方がいいです。Spring公式サイトのCollectionUtilsや実際に用意されているメソッド内のコード(GitHub)も参考になります。
すでに用意されているものを利用することが開発効率アップの近道やで!
空文字、nullの場合
containsメソッドの引数にnullや空文字を指定した場合も見ていきます。nullが関係してくるとエラーが起きやすく、バグの原因になるため気をつけましょう。下記の例はstrEmpty(空文字)に空文字が含まれているかをcontainsメソッドで判定しています。空文字の判定はStringクラスで用意されているisEmptyメソッドを利用する方法を推奨しているので、そちらを利用しましょう。
String strEmpty = "";
System.out.println(strEmpty.contains(""));
//実行結果:true
System.out.println(strEmpty.isEmpty());
//実行結果:true
下記の例では、nullに空文字が含まれているか、nullにnullが含まれているかをcontainsメソッドで確認していますが、どちらもNullPointerExceptionのエラーとなっています。
String strNull = null;
System.out.println(strNull.contains(""));
//実行結果:NullPointerException
System.out.println(strNull.contains(null));
//実行結果:NullPointerException
nullに対してはcontainsメソッドを利用することはできません。そのため、nullが入る可能性がある文字列でcontainsメソッドを利用する場合は事前にチェックをする必要があります。筆者の「しう」が開発現場で開発をしている時は、ObjectsクラスのisNullメソッドでnullの判定をしていたり、Optionalクラスを利用したりしていました。
まとめ
いかがでしたか?今回は、次の順番でJavaのcontainsメソッドについて記載をしました。
- containsメソッドとは?【Java】
- containsメソッドの使い方
- 文字列の場合
- リストの場合
- 空文字、nullの場合
特にリストの場合はSpringのCollectionUtilsクラスでcontainsメソッドが用意されていたり、Javaで起こりがちなnullに関してはObjectsクラスのisNullメソッドやOptionalクラスを利用することでnullのエラーを防ぎやすくなったりします。この記事を参考にcontainsメソッドの理解が進めばいいなと思います。
☟あわせて読みたい 「しう」のオススメブログ
コメント