스택(Stack)과 큐(Queue)
📌 스택(Stack)
: LIFO(last-in-first-out)
가장 먼저 저장된 데이터가 가장 나중에 빠져나오는 자료구조.
📌 큐(Queue)
: FIFO(first-in-first-out)
저장된 데이터 순으로 나오는 자료구조.
Queue<E> 인터페이스
📌 Queue<E> 인터페이스의 메소드
: 꺼낼 인스턴스가 없거나 저장 공간이 부족하면 예외 발생함.
boolean add(E e) | 넣기. |
E remove( ) | 인스턴스의 참조 값을 반환하면서 해당 인스턴스를 삭제. |
E element( ) | 인스턴스의 참조 값 반환. |
📌 Queue<E> 인터페이스의 메소드
: 꺼낼 인스턴스가 없거나 저장 공간이 부족해도 예외 발생시키지 않고 특정 값 반환함.
boolean offer(E e) | 넣기, 넣을 공간이 부족하면 false 반환. |
E poll( ) | 인스턴스의 참조 값을 반환하면서 해당 인스턴스를 삭제, 꺼낼 대상 없으면 null 반환. |
E peek( ) | 인스턴스의 참조 값 반환, 확인할 대상이 없으면 null 반환. |
📄 QueueTest.java
package queue;
import java.util.LinkedList;
import java.util.Queue;
public class QueueTest {
public static void main(String[] args) {
Queue<String> q = new LinkedList<>();
q.offer("apple");
q.offer("banana");
q.offer("cherry");
// 다음에 나올 거 확인 -> 꺼내기.
System.out.println("next : " + q.peek()); // next : apple
System.out.println(q.poll()); // apple
// 다음에 나올 거 확인 -> 꺼내기.
System.out.println("next : " + q.peek()); // next : banana
System.out.println(q.poll()); // banana
// 다음에 나올 거 확인 -> 꺼내기.
System.out.println("next : " + q.peek()); // next : cherry
System.out.println(q.poll()); // cherry
// 다음에 나올 거 확인 -> 꺼내기.
System.out.println("next : " + q.peek()); // next : null
System.out.println(q.poll()); // null
}
}
Stack<E> 클래스
📌 public class Stack<E> extends Vector<E>
: 자바 초기에 정의된 클래스로, 지금은 이전 코드와의 호환성 유지를 위해 존재함.
동기화된 클래스로 멀티 쓰레드에 안전하지만, 성능 저하 발생.
Deque<E> 인터페이스
📌 public interface Deque<E> extends Queue<E>
: 큐(Queue)와 유사하지만, 덱(Deque)은 양쪽에서 데이터 넣고 빼기 가능.
📌 Deque<E> 인터페이스의 메소드
: 꺼낼 인스턴스가 없거나 저장 공간이 부족하면 예외 발생함.
void addFirst(E e) | 앞에서 넣기. |
E removeFirst( ) | 앞에서 꺼내기. |
E getFirst( ) | 앞에서 확인하기. |
void addLast(E e) | 뒤에서 넣기. |
E removeLast( ) | 뒤에서 꺼내기. |
E getLast( ) | 뒤에서 확인하기. |
📌 Deque<E> 인터페이스의 메소드
: 꺼낼 인스턴스가 없거나 저장 공간이 부족해도 예외 발생시키지 않고 특정 값 반환함.
boolean offerFirst(E e) | 앞에서 넣기, 공간이 부족하면 false 반환. |
E pollFirst( ) | 앞에서 꺼내기, 꺼낼 대상 없으면 null 반환. |
E peekFirst( ) | 앞에서 확인하기, 확인할 대상 없으면 null 반환. |
boolean offerLast(E e) | 뒤에서 넣기, 공간이 부족하면 false 반환. |
E pollLast( ) | 뒤에서 꺼내기, 꺼낼 대상 없으면 null 반환. |
E peekLast( ) | 뒤에서 확인하기, 확인할 대상 없으면 null 반환. |
📌 스택(Stack)이 필요한 경우,
Deque<E>을 구현한 컬렉션 클래스의 인스턴스를 대상으로 쌍을 이뤄 메소드를 호출하면 됨.
(offerFirst & pollFirst, offerLast & pollLast)
'Java > Java' 카테고리의 다른 글
[Java] 네스티드 클래스(Nested Class)와 이너 클래스(Inner Class) (0) | 2022.10.20 |
---|---|
[Java] 컬렉션 프레임워크 - Map<K, V> 인터페이스 (0) | 2022.10.18 |
[Java] 컬렉션 프레임워크 - Set<E> 인터페이스 (0) | 2022.10.18 |
[Java] 컬렉션 프레임워크 - List<E> 인터페이스 (0) | 2022.10.18 |
[Java] 와일드카드(Wildcard) (0) | 2022.10.18 |
댓글