はじめに
この実験では、Java のリストが空かどうかを効果的にチェックする方法を学びます。標準の isEmpty() メソッドを調べ、size() を使用してリストのサイズを検証し、潜在的な null リストのシナリオを処理する方法を理解して、堅牢で信頼性の高いコードを記述します。
isEmpty() を使ったリストのチェック
このステップでは、Java のリストが空かどうかを isEmpty() メソッドを使ってチェックする方法を学びます。これはプログラミングにおける一般的なタスクであり、isEmpty() はそれを明確かつ効率的に行う方法を提供します。
まず、~/project ディレクトリに ListCheck.java という名前の新しい Java ファイルを作成しましょう。これは左側のファイルエクスプローラーで右クリックして「新しいファイル」を選択し、ListCheck.java と入力することで行えます。
次に、エディタで ListCheck.java を開き、以下のコードを追加します。
import java.util.ArrayList;
import java.util.List;
public class ListCheck {
public static void main(String[] args) {
// Create an empty list
List<String> emptyList = new ArrayList<>();
// Create a list with elements
List<String> populatedList = new ArrayList<>();
populatedList.add("Apple");
populatedList.add("Banana");
// Check if the lists are empty using isEmpty()
System.out.println("Is emptyList empty? " + emptyList.isEmpty());
System.out.println("Is populatedList empty? " + populatedList.isEmpty());
}
}
このコードを分解してみましょう。
import java.util.ArrayList;とimport java.util.List;:これらの行は、リストを操作するために必要なクラスをインポートします。List<String> emptyList = new ArrayList<>();:この行は、Stringオブジェクトを保持できる新しい空のリストを作成します。List<String> populatedList = new ArrayList<>();:この行は、別の新しいリストを作成します。populatedList.add("Apple");とpopulatedList.add("Banana");:これらの行は、populatedListに要素を追加します。System.out.println("Is emptyList empty? " + emptyList.isEmpty());:この行は、emptyListに対してisEmpty()メソッドを呼び出します。isEmpty()メソッドは、リストに要素がない場合はtrueを返し、それ以外の場合はfalseを返します。結果はコンソールに出力されます。System.out.println("Is populatedList empty? " + populatedList.isEmpty());:この行は、populatedListに対して同じことを行います。
ListCheck.java ファイルを保存します。
次に、WebIDE の下部にあるターミナルを開き、~/project ディレクトリにいることを確認します。必要に応じて cd ~/project コマンドを使用できます。
javac コマンドを使用して Java コードをコンパイルします。
javac ListCheck.java
エラーがなければ、~/project ディレクトリに ListCheck.class ファイルが作成されます。
最後に、java コマンドを使用してコンパイルされた Java プログラムを実行します。
java ListCheck
以下のような出力が表示されるはずです。
Is emptyList empty? true
Is populatedList empty? false
この出力は、isEmpty() が空のリストと要素のあるリストを正しく識別したことを確認します。isEmpty() を使用することは、サイズをチェックするよりも読みやすく、潜在的に効率的であるため、Java で空のリストをチェックする際の推奨される方法です。
size() でリストのサイズを確認する
前のステップでは、isEmpty() を使ってリストが空かどうかをチェックする方法を学びました。isEmpty() はリストに要素があるかどうかをチェックするのに便利ですが、時にはリストに具体的に何個の要素があるかを知る必要があります。このために、Java は size() メソッドを提供しています。
このステップでは、ListCheck.java ファイルを修正して size() メソッドを使用し、その動作を確認します。
まだ開いていない場合は、WebIDE のエディタで ListCheck.java ファイルを開きます。このファイルは ~/project ディレクトリにあるはずです。
次に、main メソッドにいくつかの行を追加して、リストのサイズを出力しましょう。isEmpty() を使用した行の 後に 以下の行を追加します。
import java.util.ArrayList;
import java.util.List;
public class ListCheck {
public static void main(String[] args) {
// Create an empty list
List<String> emptyList = new ArrayList<>();
// Create a list with elements
List<String> populatedList = new ArrayList<>();
populatedList.add("Apple");
populatedList.add("Banana");
// Check if the lists are empty using isEmpty()
System.out.println("Is emptyList empty? " + emptyList.isEmpty());
System.out.println("Is populatedList empty? " + populatedList.isEmpty());
// Get and print the size of the lists using size()
System.out.println("Size of emptyList: " + emptyList.size());
System.out.println("Size of populatedList: " + populatedList.size());
}
}
2 つの新しい行を追加しました。
System.out.println("Size of emptyList: " + emptyList.size());:この行はemptyListに対してsize()メソッドを呼び出します。size()メソッドは、リスト内の要素の数を整数として返します。System.out.println("Size of populatedList: " + populatedList.size());:この行はpopulatedListに対して同じことを行います。
ListCheck.java ファイルを保存します。
次に、~/project ディレクトリのターミナルに戻ります。修正した Java コードを再コンパイルする必要があります。
javac ListCheck.java
コンパイルが成功したら、プログラムを再度実行します。
java ListCheck
以下のような出力が表示されるはずです。
Is emptyList empty? true
Is populatedList empty? false
Size of emptyList: 0
Size of populatedList: 2
ご覧の通り、size() は emptyList が 0 個の要素を持ち、populatedList が 2 個の要素を持つことを正しく報告しています。
リストのサイズが 0 かどうかをチェックすることで (list.size() == 0) リストが空かどうかを確認することもできますが、明確性と読みやすさのために、一般的には isEmpty() の使用が推奨されます。ただし、リスト内の要素の正確な数を知る必要がある場合、たとえばリストをループ処理するときやアイテムの数に基づいて計算を行うときには、size() は不可欠です。
null のリストを扱う
前のステップでは、空または要素を含むリストを扱いました。しかし、実際のプログラミングでは、リスト変数が null になる可能性があります。null 参照とは、変数がメモリ内のどのオブジェクトも指していないことを意味します。null リストに対して isEmpty() や size() のようなメソッドを呼び出そうとすると、NullPointerException が発生します。これは Java でよく見られるエラーです。
このステップでは、リストが空かどうかを確認したり、サイズを取得したりする前に、null リストを安全に扱う方法を学びます。
WebIDE のエディタで ListCheck.java ファイルを開きます。
新しいリスト変数を追加し、それを null に設定しましょう。そして、null をチェックせずにメソッドを呼び出した場合に何が起こるかを示します。main メソッドを以下のコードを含むように修正します。
import java.util.ArrayList;
import java.util.List;
public class ListCheck {
public static void main(String[] args) {
// Create an empty list
List<String> emptyList = new ArrayList<>();
// Create a list with elements
List<String> populatedList = new ArrayList<>();
populatedList.add("Apple");
populatedList.add("Banana");
// Create a null list
List<String> nullList = null;
// Check if the lists are empty using isEmpty()
System.out.println("Is emptyList empty? " + emptyList.isEmpty());
System.out.println("Is populatedList empty? " + populatedList.isEmpty());
// Get and print the size of the lists using size()
System.out.println("Size of emptyList: " + emptyList.size());
System.out.println("Size of populatedList: " + populatedList.size());
// --- This part will cause an error if uncommented ---
// System.out.println("Is nullList empty? " + nullList.isEmpty()); // This line will cause a NullPointerException
// System.out.println("Size of nullList: " + nullList.size()); // This line will also cause a NullPointerException
// ----------------------------------------------------
// Safely check for null before calling methods
System.out.println("\nSafely checking for null:");
if (nullList == null) {
System.out.println("nullList is null.");
} else {
System.out.println("Is nullList empty? " + nullList.isEmpty());
System.out.println("Size of nullList: " + nullList.size());
}
if (emptyList == null) {
System.out.println("emptyList is null.");
} else {
System.out.println("Is emptyList empty? " + emptyList.isEmpty());
System.out.println("Size of emptyList: " + emptyList.size());
}
}
}
以下を追加しました。
List<String> nullList = null;:これはリスト変数を宣言し、その値をnullに設定します。NullPointerExceptionを引き起こす行をコメントアウトしました。if文:if (nullList == null)。これがnullを扱うための重要な部分です。nullList変数がnullかどうかを、メソッドを呼び出す 前に チェックします。もしnullなら、メッセージを出力します。nullでなければ、安全にisEmpty()とsize()を呼び出すことができます。emptyListに対しても同様のチェックを追加し、if条件が非nullリストに対しても正しく機能することを示しました。
ListCheck.java ファイルを保存します。
ターミナルで修正したコードをコンパイルします。
javac ListCheck.java
プログラムを実行します。
java ListCheck
出力は次のようになるはずです。
Is emptyList empty? true
Is populatedList empty? false
Size of emptyList: 0
Size of populatedList: 2
Safely checking for null:
nullList is null.
Is emptyList empty? true
Size of emptyList: 0
nullList が null かどうかを正常にチェックし、NullPointerException を回避できたことに注意してください。また、emptyList に対するチェックも正しく機能することを確認しました。
メソッドを呼び出す前に、リスト(または任意のオブジェクト参照)が null になる可能性があるかどうかを常にチェックすることを忘れないでください。これは、NullPointerException エラーを防ぐための Java の基本的な作法です。一般的なパターンは、if (myList != null && !myList.isEmpty()) のように、リストが null でなく、かつ空でないことを 1 つの条件でチェックすることです。
まとめ
この実験では、Java のリストが空かどうかを確認する方法を学びました。まず、isEmpty() メソッドを調べました。このメソッドは、リストに要素が含まれているかどうかを簡単かつ効率的に判断する方法を提供します。空のリストと要素を含むリストの両方を作成し、isEmpty() を使用してそれらの状態を確認し、ブール値の出力を観察しました。
また、size() メソッドを使用して、リストのサイズを 0 と比較することで、リストが空かどうかを確認する方法も調べました。このメソッドはリスト内の要素の数を返し、サイズが 0 の場合は空のリストを示します。最後に、空かどうかを確認する前にヌルリストを扱う重要な側面に対処し、ヌルチェックを追加することで NullPointerException を防ぐ方法を示しました。



