오늘은 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을 사용할 때 매우 중요하므로, 잘 이해하고 활용하시기 바랍니다. 다음 포스트에서는 다른 중요한 메서드에 대해 알아보도록 하겠습니다.
댓글