안녕하세요, JAVA에 관심이 많은 개발자 여러분. 오늘은 JAVA Stack 클래스의 두 중요한 메소드인 'empty'와 'isEmpty'에 대해 알아보겠습니다. 이 두 메소드는 Stack이 비어있는지 여부를 판단하는 데 사용되며, 다양한 상황에서 유용하게 사용될 수 있습니다.
Stack이란?
Stack은 LIFO(Last In, First Out) 원칙에 따라 동작하는 데이터 구조입니다. 이는 마지막에 추가된 요소가 가장 먼저 제거되는 원칙을 의미합니다. JAVA에서는 Stack 클래스를 제공하여 이러한 구조를 쉽게 구현할 수 있습니다.
empty 메소드 vs isEmpty 메소드
Stack 클래스의 'empty' 메소드와 'isEmpty' 메소드는 둘 다 Stack이 비어있는지 여부를 판단하는 데 사용됩니다. 그러나 두 메소드는 서로 다른 인터페이스에 속합니다. 'empty'는 Stack 클래스의 메소드이고, 'isEmpty'는 Stack 클래스가 구현하는 Collection 인터페이스의 메소드입니다.
두 메소드 모두 Stack이 비어있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 그러나 일반적으로 'isEmpty' 메소드가 더 일반적으로 사용되며, 'empty'는 하위 호환성을 위해 남겨진 것입니다.
이제 'empty'와 'isEmpty' 메소드를 활용하는 몇 가지 예제를 살펴보겠습니다.
예제 1: 기본적인 empty와 isEmpty 메소드의 활용
이 예제에서는 Stack 객체를 생성하고, 'empty'와 'isEmpty' 메소드를 활용하여 Stack의 상태를 출력하는 간단한 예제를 살펴보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import java.util.Stack; public class Main { public static void main(String[] args) { Stack<Integer> stack = new Stack<Integer>(); // Stack의 상태 출력 System.out.println("Is the stack empty? (Using empty) " + stack.empty()); // true System.out.println("Is the stack empty? (Using isEmpty) " + stack.isEmpty()); // true // 요소 추가 stack.push(1); // Stack의 상태 출력 System.out.println("Is the stack empty? (Using empty) " + stack.empty()); // false System.out.println("Is the stack empty? (Using isEmpty) " + stack.isEmpty()); // false } } | cs |
이 코드에서는 Stack이 비어있는 상태에서 'empty'와 'isEmpty' 메소드를 호출하면 둘 다 true를 반환하고, 요소를 추가한 후에는 둘 다 false를 반환함을 확인할 수 있습니다.
예제 2: Stack과 empty, isEmpty를 활용한 괄호 매칭
이 예제에서는 'empty'와 'isEmpty' 메소드를 활용하여 문자열 내의 괄호가 올바르게 매칭되었는지 확인하는 알고리즘을 구현해보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import java.util.Stack; public class Main { public static void main(String[] args) { String str = "{()}[]"; System.out.println(isBalanced(str)); // true } public static boolean isBalanced(String str) { Stack<Character> stack = new Stack<Character>(); for(int i = 0; i < str.length(); i++) { char ch = str.charAt(i); // 여는 괄호를 만나면 스택에 추가 if(ch == '{' || ch == '[' || ch == '(') { stack.push(ch); } else { // 닫는 괄호를 만나면 스택에서 제거하고 매칭 확인 if(stack.empty()) { return false; // 스택이 비어있으면 매칭 실패 } char top = stack.pop(); if((top == '{' && ch != '}') || (top == '[' && ch != ']') || (top == '(' && ch != ')')) { return false; // 괄호가 매칭되지 않으면 실패 } } } return stack.isEmpty(); // 모든 문자열을 확인한 후에도 스택이 비어있다면 괄호가 올바르게 매칭된 것임 } } | cs |
이 코드에서 'empty' 메소드는 스택이 비어있는 상황에서 닫는 괄호를 만날 경우와, 모든 문자열을 확인한 후에도 여는 괄호가 남아있지 않는지 확인하는 데 사용됩니다.
JAVA Stack의 'empty'와 'isEmpty' 메소드에 대해 궁금증이 해결되었길 바랍니다. 다음 시간에는 더 심도 있는 JAVA에 대한 내용을 다루도록 하겠습니다. 감사합니다.
댓글 없음:
댓글 쓰기