Java – containsメソッドの使い方 – 文字列やリストからの検索
Javaのcontainsメソッド
は、特定の要素が文字列やリストに含まれているかを判定するために使用されます。
文字列の場合、String.contains(CharSequence)
を用いて、指定した部分文字列が含まれているかを確認します。
リストの場合、List.contains(Object)
を使用し、指定した要素がリスト内に存在するかを判定します。
戻り値はどちらもboolean型
で、要素が存在すればtrue
、存在しなければfalse
を返します。
大文字小文字の区別はcontains
では考慮されるため、必要に応じて事前に文字列を正規化することが推奨されます。
containsメソッドとは
Javaにおけるcontainsメソッド
は、主に文字列やコレクション(リストなど)に特定の要素が含まれているかどうかを確認するために使用されます。
このメソッドは、特定の要素が存在するかを簡単にチェックできるため、プログラムのロジックをシンプルに保つのに役立ちます。
文字列におけるcontainsメソッド
文字列に対してcontainsメソッド
を使用すると、指定した部分文字列が元の文字列に含まれているかどうかを判定できます。
大文字と小文字は区別されます。
リストにおけるcontainsメソッド
リストに対してcontainsメソッド
を使用すると、指定した要素がリスト内に存在するかどうかを確認できます。
リストの要素は、オブジェクトの等価性に基づいて比較されます。
このメソッドは、特にデータの検索やフィルタリングを行う際に非常に便利です。
次のセクションでは、具体的な使い方をサンプルコードを交えて解説します。
文字列におけるcontainsメソッドの使い方
JavaのStringクラス
には、containsメソッド
が用意されており、特定の部分文字列が元の文字列に含まれているかを確認することができます。
このメソッドは、以下のように使用します。
メソッドのシグネチャ
public boolean contains(CharSequence sequence)
- 引数:
CharSequence
型の部分文字列 - 戻り値: 部分文字列が含まれている場合は
true
、そうでない場合はfalse
以下のコードは、文字列に特定の部分文字列が含まれているかを確認する例です。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
// 検索対象の文字列
String originalString = "Javaプログラミングは楽しいです。";
// 検索する部分文字列
String searchString = "楽しい";
// containsメソッドを使用して部分文字列が含まれているか確認
boolean contains = originalString.contains(searchString);
// 結果を出力
if (contains) {
System.out.println("部分文字列は含まれています。");
} else {
System.out.println("部分文字列は含まれていません。");
}
}
}
部分文字列は含まれています。
このコードでは、originalString
に対してsearchString
が含まれているかを確認し、その結果を出力しています。
containsメソッド
を使うことで、簡潔に部分文字列の存在をチェックすることができます。
リストにおけるcontainsメソッドの使い方
JavaのList
インターフェースには、containsメソッド
があり、特定の要素がリストに含まれているかどうかを確認することができます。
このメソッドは、リスト内の要素の等価性に基づいて比較を行います。
メソッドのシグネチャ
public boolean contains(Object o)
- 引数: 検索する要素
Object型
- 戻り値: 要素がリストに含まれている場合は
true
、そうでない場合はfalse
以下のコードは、リストに特定の要素が含まれているかを確認する例です。
import java.util.ArrayList; // ArrayListクラスをインポート
import java.util.List; // Listインターフェースをインポート
public class App {
public static void main(String[] args) {
// リストの作成
List<String> fruits = new ArrayList<>();
fruits.add("りんご");
fruits.add("ばなな");
fruits.add("みかん");
// 検索する要素
String searchFruit = "ばなな";
// containsメソッドを使用して要素が含まれているか確認
boolean contains = fruits.contains(searchFruit);
// 結果を出力
if (contains) {
System.out.println("リストに" + searchFruit + "が含まれています。");
} else {
System.out.println("リストに" + searchFruit + "は含まれていません。");
}
}
}
リストにばななが含まれています。
このコードでは、fruits
リストに対してsearchFruit
が含まれているかを確認し、その結果を出力しています。
containsメソッド
を使用することで、リスト内の要素の存在を簡単にチェックすることができます。
containsメソッドの注意点と制限
Javaのcontainsメソッド
は非常に便利ですが、使用する際にはいくつかの注意点や制限があります。
以下に主なポイントをまとめます。
1. 大文字と小文字の区別
Stringクラス
のcontainsメソッド
は、大文字と小文字を区別します。- 例えば、”Java”と”java”は異なる文字列として扱われます。
2. nullの扱い
containsメソッド
にnull
を渡すと、NullPointerException
が発生します。- そのため、事前に
null
チェックを行うことが推奨されます。
3. リストの要素の等価性
List
のcontainsメソッド
は、要素の等価性をequalsメソッド
を使って判断します。- したがって、カスタムオブジェクトをリストに含める場合は、
equalsメソッド
を適切にオーバーライドする必要があります。
4. パフォーマンス
containsメソッド
は、リストのサイズが大きくなるとパフォーマンスが低下する可能性があります。- 特に
ArrayList
の場合、最悪のケースではO(n)の時間計算量になります。
5. 部分文字列の検索
String
のcontainsメソッド
は部分文字列の検索に特化していますが、正規表現を使用した検索はできません。- より複雑なパターンマッチングが必要な場合は、
Patternクラス
を使用する必要があります。
これらの注意点を理解しておくことで、containsメソッド
をより効果的に活用することができます。
特に、リストや文字列の検索を行う際には、これらの制限を考慮することが重要です。
応用的な使い方
containsメソッド
は、基本的な使用法だけでなく、さまざまな応用的な使い方があります。
ここでは、文字列やリストに対するcontainsメソッド
の応用例をいくつか紹介します。
1. 複数の部分文字列の検索
複数の部分文字列が含まれているかを確認する場合、ループを使用して各部分文字列をチェックすることができます。
import java.util.ArrayList; // ArrayListクラスをインポート
import java.util.List; // Listインターフェースをインポート
public class App {
public static void main(String[] args) {
// 検索対象の文字列
String originalString = "Javaプログラミングは楽しいです。";
// 検索する部分文字列のリスト
List<String> searchStrings = new ArrayList<>();
searchStrings.add("Java");
searchStrings.add("楽しい");
searchStrings.add("Python"); // 存在しない部分文字列
// 各部分文字列が含まれているか確認
for (String searchString : searchStrings) {
boolean contains = originalString.contains(searchString);
System.out.println(searchString + "は含まれているか: " + contains);
}
}
}
Javaは含まれているか: true
楽しいは含まれているか: true
Pythonは含まれているか: false
2. フィルタリング機能の実装
リスト内の特定の要素をフィルタリングする際にもcontainsメソッド
を活用できます。
以下の例では、特定の文字列を含む要素だけを抽出します。
import java.util.ArrayList; // ArrayListクラスをインポート
import java.util.List; // Listインターフェースをインポート
public class App {
public static void main(String[] args) {
// リストの作成
List<String> fruits = new ArrayList<>();
fruits.add("りんご");
fruits.add("ばなな");
fruits.add("みかん");
fruits.add("ぶどう");
// フィルタリングする部分文字列
String filterString = "ん";
// フィルタリング結果を格納するリスト
List<String> filteredFruits = new ArrayList<>();
// containsメソッドを使用してフィルタリング
for (String fruit : fruits) {
if (fruit.contains(filterString)) {
filteredFruits.add(fruit);
}
}
// フィルタリング結果を出力
System.out.println("フィルタリング結果: " + filteredFruits);
}
}
フィルタリング結果: [りんご, みかん]
3. 正規表現との併用
containsメソッド
は部分文字列の検索に特化していますが、正規表現を使用することで、より複雑なパターンマッチングを行うことができます。
以下の例では、Patternクラス
を使用して、特定のパターンが含まれているかを確認します。
import java.util.regex.Pattern; // Patternクラスをインポート
public class App {
public static void main(String[] args) {
// 検索対象の文字列
String originalString = "Javaプログラミングは楽しいです。";
// 正規表現パターン
String regex = ".*楽しい.*"; // "楽しい"を含むか
// パターンをコンパイル
Pattern pattern = Pattern.compile(regex);
// パターンが含まれているか確認
boolean matches = pattern.matcher(originalString).matches();
// 結果を出力
System.out.println("正規表現にマッチするか: " + matches);
}
}
正規表現にマッチするか: true
これらの応用例を通じて、containsメソッド
の使い方をさらに深めることができます。
特に、複数の部分文字列の検索やフィルタリング機能の実装は、実際のアプリケーションで非常に役立つ技術です。
まとめ
この記事では、Javaのcontainsメソッド
について、文字列やリストにおける基本的な使い方から応用的な利用法までを詳しく解説しました。
特に、部分文字列の検索やリスト内の要素の確認、さらには正規表現との併用によるパターンマッチングの方法についても触れました。
これらの知識を活用して、実際のプログラムにおけるデータ検索やフィルタリング機能を実装してみてください。