본문 바로가기
프로그래밍/Java

[JAVA]Stack 'empty'와 'isEmpty'를 이해하고 활용하기

by wyatti 2023. 6. 25.

Java의 Stack 클래스에서 'empty'와 'isEmpty' 메소드를 이해하고 활용하는 방법을 자세히 배우세요. 예제와 코드를 통해 두 메소드의 사용법과 차이점을 이해해보세요.
Java Stack: 'empty'와 'isEmpty'의 이해와 활용

 

오늘은 JAVA의 Stack 클래스에서 'empty'와 'isEmpty' 메서드에 대해 자세히 알아보려 합니다. 이 두 메서드는 Stack이 비어있는지 아닌지를 판단해 주는 매우 중요한 기능을 가지고 있습니다. 그렇다면 이 두 메서드의 차이점은 무엇일까요?

 

 

 

 

'empty' vs 'isEmpty': 무엇이 다른가?

  • 'empty'와 'isEmpty'는 둘 다 Stack이 비어있는지를 확인하는 메소드이지만, 그들이 속한 클래스와 인터페이스에서 약간의 차이가 있습니다.
  • 'empty': 'empty' 메소드는 Stack 클래스에 정의되어 있습니다. 이 메서드는 Stack이 비어있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
  • 'isEmpty': 반면에 'isEmpty' 메소드는메서드는 Collection 인터페이스에 정의되어 있습니다. 이 인터페이스는 List, Set, Queue 등 다양한 데이터 구조를 포함하므로, 'isEmpty' 메서드는 이러한 다양한 데이터 구조에 공통적으로 적용될 수 있습니다.

따라서, 이 두 메소드의 가장 큰 차이점은 'empty'는 Stack에 한정되어 있고, 'isEmpty'는 더 넓은 범위의 데이터 구조에 적용될 수 있다는 점입니다. 이제 이 두 메서드를 어떻게 사용하는지 알아볼까요?

 

 

'empty'와 'isEmpty' 활용하기

import java.util.Stack;

public class TestStack {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();

        // Use 'empty' method to check if the stack is empty
        System.out.println("Using 'empty': " + stack.empty()); // Output: true

        // Use 'isEmpty' method to check if the stack is empty
        System.out.println("Using 'isEmpty': " + stack.isEmpty()); // Output: true

        // Push an item to the stack
        stack.push(1);

        // Check if the stack is empty after pushing an item
        System.out.println("Using 'empty' after pushing an item: " + stack.empty()); // Output: false
        System.out.println("Using 'isEmpty' after pushing an item: " + stack.isEmpty()); // Output: false
    }
}

위 코드에서 볼 수 있듯이, 'empty'와 'isEmpty'는 Stack이 비어있는지 아닌지를 판단하는 동일한 기능을 가지고 있습니다. Stack에 아이템이 추가되면 두 메소드 모두 false를 반환합니다.

이번에는 'empty'와 'isEmpty'를 사용하여 괄호 매칭 문제를 해결하는 복잡한 예제를 살펴보겠습니다.

 

 

복잡한 예제: 괄호 매칭 문제

import java.util.Stack;

public class TestStack {
    public static void main(String[] args) {
        String input = "{[()]}";

        System.out.println(isValid(input)); // Output: true
    }

    public static boolean isValid(String s) {
        Stack stack = new Stack<>();

        for (char c : s.toCharArray()) {
            if (c == '(' || c == '[' || c == '{') {
                stack.push(c);
            } else {
                if (stack.isEmpty()) {
                    return false;
                }

                char top = stack.pop();

                if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) {
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }
}

 

 

이 코드는 'isEmpty' 메소드를 사용하여 Stack이 비어있는지 확인하고, 괄호가 올바르게 닫혀 있는지 확인합니다.

 

이상으로 'empty'와 'isEmpty' 메서드에 대한 설명을 마치겠습니다. 이 두 메서드는 JAVA에서 Stack을 사용할 때 매우 중요하므로, 잘 이해하고 활용하시기 바랍니다. 다음 포스트에서는 다른 중요한 메서드에 대해 알아보도록 하겠습니다.

 

 

 

댓글