Java/개념
Stack, Queue
spring_sunshine
2023. 9. 21. 01:48
Stack
- 자바의 컬렉션 프레임워크에서 제공하는 LIFO(후입선출) 자료구조 클래스이다.
- 자바에서 제공하는 Stack 클래스는 java.util.Vector<E> 클래스를 상속받았으므로, 해당하는 기능을 전부 쓸 수 있다.
다음은 Stack 클래스의 주요 메소드이다.
Stack 객체를 생성하려면 E 타입 파라미터 자리에 저장할 객체 타입을 표기하고, 기본 생성자를 호출하면 된다.
Stack<E> stack = new Stack<E>();
Stack<E> stack = new Stack<>(); // 타입파라미터 생략하면 왼쪽타입 따라감
Queue
- 자바에서의 큐는 인터페이스로만 정의되어 있고, 별도로 클래스를 제공하지 않고 있다.
- 따라서 Queue 클래스 인스턴스를 생성하기 위해선 Queue 인터페이스 구현체인 LinkedList() 생성자를 호출해준다.
다음은 Queue 인터페이스에 정의되어 있는 메소드이다.
LinkedList 객체를 다음과 같이 Queue 인터페이스 타입으로 변환하여 큐를 구현한다.
Queue<E> queue = new LinkedList<E>();
Queue<E> queue = new LinkedList<>();
다음은 Stack과 Queue를 같이 구현한 예제이다.
import java.util.LinkedList;
import java.util.Stack;
import java.util.Queue;
public class StackAndQueue{
public static void main(String args[]){
Stack<String> stack = new Stack<>();
stack.push("0");
stack.push("1");
stack.push("2");
Queue<String> queue = new LinkedList<>();
queue.offer("0");
queue.offer("1");
queue.offer("2");
/*
queue.add("0");
queue.add("1");
queue.add("2");
*/
System.out.println("**Stack**");
while(!stack.isEmpty()){
System.out.println(stack.pop()); // 2 1 0
}
System.out.println("**Queue**");
while(!queue.isEmpty()){
System.out.println(queue.poll()); // 0 1 2
}
}
}