はじめに
この実験では、Java の Stack
が空かどうかを確認する方法を学びます。標準の isEmpty()
メソッドや size()
メソッドなど、これを実現するためのさまざまな方法を探ります。また、null のスタックの場合の対処方法も学びます。
実践的な例を通じて、Java の Stack
の空状態を判断するためにこれらの技術を使用する実際の経験を積むことができます。これは、このデータ構造を扱う際の基本的な操作です。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Java の Stack
が空かどうかを確認する方法を学びます。標準の isEmpty()
メソッドや size()
メソッドなど、これを実現するためのさまざまな方法を探ります。また、null のスタックの場合の対処方法も学びます。
実践的な例を通じて、Java の Stack
の空状態を判断するためにこれらの技術を使用する実際の経験を積むことができます。これは、このデータ構造を扱う際の基本的な操作です。
このステップでは、Java の Stack
が空かどうかを isEmpty()
メソッドを使って確認する方法を学びます。Stack
クラスは Java コレクションフレームワークの一部で、オブジェクトの後入れ先出し (LIFO: Last-In, First-Out) スタックを表します。スタックが空かどうかを確認することは、スタックを扱う際の一般的な操作です。たとえば、要素を削除しようとする前に行います。
isEmpty()
メソッドは、Stack
を含むコレクションが要素を含んでいるかどうかを判断する簡単で効率的な方法です。コレクションが空(要素を含まない)場合は true
を返し、それ以外の場合は false
を返します。
isEmpty()
メソッドを実証する簡単な Java プログラムを作成しましょう。
HelloJava.java
ファイルがまだ開いていない場合は、WebIDE エディタで開きます。
ファイルの内容全体を次のコードに置き換えます。
import java.util.Stack;
public class HelloJava {
public static void main(String[] args) {
// Create a new Stack
Stack<String> stack = new Stack<>();
// Check if the stack is empty using isEmpty()
boolean isEmptyBeforePush = stack.isEmpty();
System.out.println("Is the stack empty before pushing elements? " + isEmptyBeforePush);
// Push some elements onto the stack
stack.push("Element 1");
stack.push("Element 2");
// Check if the stack is empty after pushing elements
boolean isEmptyAfterPush = stack.isEmpty();
System.out.println("Is the stack empty after pushing elements? " + isEmptyAfterPush);
}
}
このコードの新しい部分を見てみましょう。
import java.util.Stack;
: この行は Stack
クラスをインポートし、プログラムで使用できるようにします。Stack<String> stack = new Stack<>();
: この行は、String
オブジェクトを保持できる新しい空の Stack
を作成します。stack.isEmpty();
: これが今回注目するメソッドです。stack
オブジェクトが空かどうかを確認します。stack.push("...");
: このメソッドは、要素をスタックのトップに追加します。ファイルを保存します(Ctrl+S または Cmd+S)。
では、修正したプログラムをコンパイルしましょう。ターミナルで、~/project
ディレクトリにいることを確認してから、次のコマンドを実行します。
javac HelloJava.java
コンパイルが成功すると、何も出力されません。
最後に、プログラムを実行しましょう。
java HelloJava
次のような出力が表示されるはずです。
Is the stack empty before pushing elements? true
Is the stack empty after pushing elements? false
この出力は、isEmpty()
メソッドが要素を追加する前と後のスタックの状態を正しく報告していることを確認します。
前のステップでは、isEmpty()
メソッドを使用してスタックが空かどうかを確認しました。Stack
を含むコレクションに対して有用な別のメソッドは size()
メソッドです。size()
メソッドは、現在コレクションに含まれる要素の数を返します。このメソッドを使用して、スタックのサイズが 0 かどうかを確認することで、スタックが空かどうかを調べることができます。
isEmpty()
は、コレクションが空かどうかを単純に確認する場合、時にはより効率的であるため一般的に推奨されますが、size() == 0
を確認することでも同じ結果が得られます。両方のメソッドを知っておくと良いでしょう。
プログラムを修正して、size()
メソッドを使用して空状態を確認しましょう。
WebIDE エディタで HelloJava.java
ファイルを開きます。
コードを修正して、isEmpty()
の代わりに size() == 0
を使用するようにします。
import java.util.Stack;
public class HelloJava {
public static void main(String[] args) {
// Create a new Stack
Stack<String> stack = new Stack<>();
// Check if the stack is empty using size()
boolean isEmptyBeforePush = stack.size() == 0;
System.out.println("Is the stack empty before pushing elements? " + isEmptyBeforePush);
// Push some elements onto the stack
stack.push("Element A");
stack.push("Element B");
stack.push("Element C");
// Check the size of the stack after pushing elements
int sizeAfterPush = stack.size();
System.out.println("Size of the stack after pushing elements: " + sizeAfterPush);
// Check if the stack is empty after pushing elements using size()
boolean isEmptyAfterPush = stack.size() == 0;
System.out.println("Is the stack empty after pushing elements? " + isEmptyAfterPush);
}
}
変更点に注目してください。
stack.isEmpty()
を stack.size() == 0
に置き換えました。stack.size()
を使用して要素を追加した後のスタックの実際のサイズを出力する行も追加しました。ファイルを保存します(Ctrl+S または Cmd+S)。
ターミナルで修正したプログラムをコンパイルします。
javac HelloJava.java
再び、出力がないことはコンパイルが成功したことを意味します。
プログラムを実行します。
java HelloJava
次のような出力が表示されるはずです。
Is the stack empty before pushing elements? true
Size of the stack after pushing elements: 3
Is the stack empty after pushing elements? false
この出力は、stack.size() == 0
を確認することで空のスタックを正しく識別でき、stack.size()
が要素の数を返すことを示しています。
前のステップでは、isEmpty()
と size()
を使用して Stack
が空かどうかを確認する方法を学びました。また、Stack
オブジェクト自体が null
の場合に何が起こるかを理解することも重要です。Java では、null
は変数が何らかのオブジェクトを参照していないことを意味します。null
オブジェクトに対してメソッドを呼び出そうとすると、一般的なランタイムエラーである NullPointerException
が発生します。
これを実際に見て、その処理方法を学びましょう。
WebIDE エディタで HelloJava.java
ファイルを開きます。
コードを修正して、スタックを null
に設定し、その後で空かどうかを確認しようとします。
import java.util.Stack;
public class HelloJava {
public static void main(String[] args) {
// Create a new Stack and then set it to null
Stack<String> stack = new Stack<>();
stack.push("Some Element"); // Add an element first
stack = null; // Now set the stack variable to null
// Try to check if the stack is empty using isEmpty()
try {
boolean isEmpty = stack.isEmpty(); // This line will cause an error
System.out.println("Is the stack empty? " + isEmpty);
} catch (NullPointerException e) {
System.out.println("Caught a NullPointerException! The stack object is null.");
}
// Try to check the size using size()
try {
int size = stack.size(); // This line will also cause an error
System.out.println("Size of the stack: " + size);
} catch (NullPointerException e) {
System.out.println("Caught a NullPointerException! Cannot get size of a null stack.");
}
}
}
新しい部分は次の通りです。
stack = null;
: この行は、stack
変数が null
を指すようにします。以前に作成した Stack
オブジェクトは、この変数を通じてはもうアクセスできなくなります。try { ... } catch (NullPointerException e) { ... }
: これは try-catch
ブロックです。try
ブロック内のコードの実行中に発生する可能性のあるエラー(例外)を処理するために使用されます。NullPointerException
が発生した場合、catch
ブロック内のコードが実行されます。ファイルを保存します(Ctrl+S または Cmd+S)。
ターミナルでプログラムをコンパイルします。
javac HelloJava.java
コンパイルは成功するはずです。
プログラムを実行します。
java HelloJava
次のような出力が表示されるはずです。
Caught a NullPointerException! The stack object is null.
Caught a NullPointerException! Cannot get size of a null stack.
この出力は、null
のスタック変数に対して isEmpty()
または size()
を呼び出そうとすると NullPointerException
が発生し、try-catch
ブロックがこれらの例外を正常に処理したことを示しています。
これは、オブジェクトに対してメソッドを呼び出す前に、そのオブジェクトが null
でないことを確認することが重要である理由を示しています。単純な条件 if (stack != null) { ... }
を使用して、オブジェクトが null
でないことを確認することができます。
この実験では、Java の Stack
が空かどうかを確認する方法を学びました。この目的のための主要なメソッドである isEmpty()
を調べました。このメソッドは Java コレクションフレームワークの一部です。isEmpty()
を使って、スタックに要素が含まれているかどうかを判断する方法を見ました。空のスタックの場合は true
を返し、そうでない場合は false
を返します。
新しい Stack
を作成し、要素を追加する前後でその空の状態を確認し、結果を出力することで、isEmpty()
の使用方法を実証しました。この実践的な演習により、Java プログラムで isEmpty()
メソッドを使ってスタックの空状態を効果的に確認する方法を理解を深めました。