はじめに
この実験では、Java のコレクション内に特定の要素が存在するかどうかを確認する方法を学びます。すべてのコレクション型で利用可能な contains()
メソッドの使用に焦点を当てます。異なる要素型で contains()
を使用する練習を行い、null 要素の扱い方を学びます。この実験の終了時には、Java コレクション内の要素の存在を確認することに習熟するでしょう。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Java のコレクション内に特定の要素が存在するかどうかを確認する方法を学びます。すべてのコレクション型で利用可能な contains()
メソッドの使用に焦点を当てます。異なる要素型で contains()
を使用する練習を行い、null 要素の扱い方を学びます。この実験の終了時には、Java コレクション内の要素の存在を確認することに習熟するでしょう。
このステップでは、Java のコレクション内に特定の要素が存在するかどうかを確認する方法を探ります。コレクションは、複数の要素を 1 つの単位にまとめるために使用される基本的なデータ構造です。Java は、List、Set、Map など、さまざまな種類のコレクションを提供しています。
コレクションを操作する際の一般的なタスクの 1 つは、特定の要素が存在するかどうかを判断することです。すべてのコレクション型のルートインターフェースである Java の Collection
インターフェースは、この目的のために便利なメソッド contains()
を提供しています。
contains()
メソッドは 1 つの引数(確認したい要素)を取り、ブール値を返します。要素がコレクション内に見つかった場合は true
、そうでない場合は false
を返します。
一般的な List の一種である ArrayList
で contains()
メソッドを使用する方法を示すために、簡単な Java プログラムを作成しましょう。
WebIDE エディタで HelloJava.java
ファイルが開いていない場合は、開きます。
ファイルの内容全体を次のコードに置き換えます。
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List of strings
List<String> fruits = new ArrayList<>();
// Add some fruits to the list
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Mango");
// Check if the list contains "Banana"
boolean hasBanana = fruits.contains("Banana");
System.out.println("Does the list contain Banana? " + hasBanana);
// Check if the list contains "Grape"
boolean hasGrape = fruits.contains("Grape");
System.out.println("Does the list contain Grape? " + hasGrape);
}
}
この新しいコードを分解してみましょう。
import java.util.ArrayList;
と import java.util.List;
:これらの行は、List と ArrayList を操作するために必要なクラスをインポートします。List<String> fruits = new ArrayList<>();
:この行は、String
オブジェクトを保持できる新しい ArrayList
を作成し、fruits
という名前の変数に割り当てます。fruits.add("Apple");
などの行:これらの行は、要素(果物の名前を表す文字列)を fruits
リストに追加します。boolean hasBanana = fruits.contains("Banana");
:この行は、fruits
リストで contains()
メソッドを呼び出し、文字列 "Banana" が存在するかどうかを確認します。結果(true
または false
)は、ブール型の変数 hasBanana
に格納されます。System.out.println("Does the list contain Banana? " + hasBanana);
:この行は、"Banana" の存在確認の結果を出力します。boolean hasGrape = fruits.contains("Grape");
とその後の println
:これらの行は、リストに存在しない "Grape" について同じ確認を行います。ファイルを保存します(Ctrl+S または Cmd+S)。
ターミナルで修正したプログラムをコンパイルします。
javac HelloJava.java
コンパイルしたプログラムを実行します。
java HelloJava
次のような出力が表示されるはずです。
Does the list contain Banana? true
Does the list contain Grape? false
この出力は、contains()
メソッドが "Banana" がリストにあり、"Grape" がリストにないことを正しく識別したことを確認しています。
要素の存在を確認する方法を理解することは、Java のコレクションを操作する際の基本的なスキルです。次のステップでは、contains()
メソッドのさらなる側面と、さまざまなシナリオでの動作を探ります。
前のステップでは、String
オブジェクトの List
で contains()
メソッドを使用しました。contains()
メソッドは汎用性が高く、数値、カスタムオブジェクト、さらには他のコレクションなど、さまざまな型の要素を格納するコレクションで使用できます。
contains()
を使用する際、Java はコレクション内のオブジェクトの equals()
メソッドに依存して、検索対象の要素が一致するかどうかを判断します。プリミティブ型(int
、double
、boolean
など)の場合、対応するラッパークラス(Integer
、Double
、Boolean
)が使用され、それらの equals()
メソッドは値を比較します。オブジェクトの場合、デフォルトの equals()
メソッドは 2 つのオブジェクト参照が同じメモリ位置を指しているかどうかをチェックします。ただし、多くのクラス(String
、Integer
など)は、オブジェクトの実際の内容または値を比較するために equals()
メソッドをオーバーライドしています。
プログラムを修正して、Integer
オブジェクトの List
で動作させ、contains()
の動作を確認しましょう。
WebIDE エディタで HelloJava.java
ファイルを開きます。
現在のコードを次のコードに置き換えます。
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List of integers
List<Integer> numbers = new ArrayList<>();
// Add some numbers to the list
numbers.add(10);
numbers.add(25);
numbers.add(5);
numbers.add(50);
// Check if the list contains 25
boolean hasTwentyFive = numbers.contains(25);
System.out.println("Does the list contain 25? " + hasTwentyFive);
// Check if the list contains 100
boolean hasOneHundred = numbers.contains(100);
System.out.println("Does the list contain 100? " + hasOneHundred);
// Check if the list contains the Integer object with value 5
boolean hasFiveObject = numbers.contains(Integer.valueOf(5));
System.out.println("Does the list contain Integer object with value 5? " + hasFiveObject);
}
}
このコードでは、以下のことを行っています。
Integer
オブジェクトを格納する List
を作成します:List<Integer> numbers = new ArrayList<>();
。numbers.add()
を使用して整数値をリストに追加します。Java は自動的にプリミティブな int
値(10、25、5、50)を Integer
オブジェクトに変換します(これをオートボクシングと呼びます)。numbers.contains(25)
と numbers.contains(100)
を使用して、整数値の存在を確認します。再び、Java はチェックを行う前にプリミティブな int
値 25 と 100 を Integer
オブジェクトにオートボクシングします。Integer.valueOf(5)
を使用して明示的に Integer
オブジェクトを作成し、リストにこの特定のオブジェクトが含まれているかどうかを確認します。ファイルを保存します。
ターミナルでプログラムをコンパイルします。
javac HelloJava.java
プログラムを実行します。
java HelloJava
次のような出力が表示されるはずです。
Does the list contain 25? true
Does the list contain 100? false
Does the list contain Integer object with value 5? true
これは、contains()
が Integer
オブジェクトで正しく動作し、それらの値を比較することを示しています。contains()
メソッドは、コレクション内の要素と検索対象の要素の equals()
メソッドを効果的に使用します。
次のステップでは、特殊なケースとして、contains()
メソッドで null
要素を扱う方法を探ります。
Java では、コレクションに null
要素が含まれることがあります。contains()
メソッドが null
を扱う際の動作を理解することは重要です。
良いニュースは、contains()
メソッドは null
要素を適切に扱うように設計されているということです。コレクションに null
が含まれている場合、contains(null)
を呼び出すと true
が返されます。コレクションに null
が含まれていない場合は、false
が返されます。これは、一般的に null
に対する equals()
の実装方法と一致しています(任意のオブジェクトの equals(null)
は false
を返すべきですが、null.equals(anyObject)
は、コレクションの contains
実装によって内部的に処理されない場合、NullPointerException
をスローします)。
プログラムを修正して、null
要素を含め、その存在を確認しましょう。
WebIDE エディタで HelloJava.java
ファイルを開きます。
現在のコードを次のコードに置き換えます。
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List that can contain null
List<String> mixedList = new ArrayList<>();
// Add some elements, including null
mixedList.add("First");
mixedList.add(null); // Adding a null element
mixedList.add("Second");
mixedList.add(null); // Adding another null element
mixedList.add("Third");
// Check if the list contains null
boolean hasNull = mixedList.contains(null);
System.out.println("Does the list contain null? " + hasNull);
// Check if the list contains a non-existent element
boolean hasFourth = mixedList.contains("Fourth");
System.out.println("Does the list contain Fourth? " + hasFourth);
// Check if the list contains "First"
boolean hasFirst = mixedList.contains("First");
System.out.println("Does the list contain First? " + hasFirst);
}
}
このコードでは、以下のことを行っています。
mixedList
という名前の List
を作成します。String
要素を追加するとともに、mixedList.add(null);
を使用して明示的に null
を追加します。mixedList.contains(null)
を使用して、リストに null
値が含まれているかどうかを確認します。null
の確認結果と並べて結果を見ます。ファイルを保存します。
ターミナルでプログラムをコンパイルします。
javac HelloJava.java
プログラムを実行します。
java HelloJava
次のような出力が表示されるはずです。
Does the list contain null? true
Does the list contain Fourth? false
Does the list contain First? true
この出力は、contains()
がリスト内の null
の存在を正しく識別することを確認しています。コレクションには(特定のコレクション型とその使用方法によって)null
が含まれる可能性があり、contains()
はその存在を確認する信頼性の高い方法を提供することに注意することが重要です。
これで、Java コレクション内の要素(さまざまなデータ型や null
という特殊なケースを含む)の存在を確認するために contains()
メソッドを使用する方法を学びました。これは、Java プログラムでコレクションを操作する上で貴重なツールです。
この実験では、Java で contains()
メソッドを使用してコレクションに特定の要素が含まれているかどうかを確認する方法を学びました。Collection
インターフェースを通じて利用できるこのメソッドが、要素の存在を示すブール値を返す仕組みを見てきました。ArrayList
での使用例を示し、既存の要素と存在しない要素を正しく識別する様子を確認しました。
また、contains()
メソッドがさまざまなデータ型でどのように動作するか、およびコレクション内の null 要素をどのように扱うかを調べました。この実践的な経験を通じて、Java コレクションを操作する際の基本的な操作について実践的な理解を得ることができました。