소개
이 랩에서는 Java 에서 Stack이 비어 있는지 확인하는 방법을 배우게 됩니다. 표준 isEmpty() 메서드와 size() 메서드를 포함하여 이를 달성하기 위한 다양한 방법을 살펴볼 것입니다. 또한 null 스택의 경우를 처리하는 방법도 배우게 됩니다.
실습 예제를 통해 Java Stack의 비어 있음을 결정하는 이러한 기술을 사용하는 실질적인 경험을 얻게 될 것입니다. 이는 이 데이터 구조로 작업할 때 기본적인 연산입니다.
isEmpty() 를 사용하여 Stack 확인
이 단계에서는 isEmpty() 메서드를 사용하여 Java 에서 Stack이 비어 있는지 확인하는 방법을 배우게 됩니다. Stack 클래스는 Java Collections Framework 의 일부이며 객체의 LIFO(Last-In, First-Out) 스택을 나타냅니다. 스택이 비어 있는지 확인하는 것은 스택으로 작업할 때, 예를 들어 요소를 제거하기 전에 흔히 사용되는 연산입니다.
isEmpty() 메서드는 Stack을 포함한 컬렉션에 요소가 있는지 확인하는 간단하고 효율적인 방법입니다. 컬렉션이 비어 있으면 (true 요소가 없으면) false를 반환합니다.
isEmpty() 메서드를 시연하기 위해 간단한 Java 프로그램을 만들어 보겠습니다.
WebIDE 편집기에서
HelloJava.java파일을 엽니다 (아직 열려 있지 않은 경우).파일의 전체 내용을 다음 코드로 바꿉니다.
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()메서드가 요소를 추가하기 전과 후에 스택의 상태를 올바르게 보고했음을 확인합니다.
size() 메서드로 확인
이전 단계에서는 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()가 요소의 수를 반환함을 보여줍니다.
Null Stack 테스트
이전 단계에서는 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 Collections Framework 의 일부입니다. isEmpty()를 사용하여 스택에 요소가 있는지 확인하는 방법을 확인했으며, 빈 스택의 경우 true를 반환하고 그렇지 않은 경우 false를 반환합니다.
새로운 Stack을 생성하고, 요소를 푸시하기 전과 후에 비어 있는 상태를 확인하고, 결과를 출력하여 isEmpty()의 사용법을 시연했습니다. 이 실습을 통해 Java 프로그램에서 스택이 비어 있는지 확인하기 위해 isEmpty() 메서드를 효과적으로 사용하는 방법에 대한 이해를 굳혔습니다.



