본문 바로가기
Java/Java

[Java] 컬렉션 프레임워크 - Queue<E> 인터페이스

by 기록하는_사람 2022. 10. 18.

스택(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) 

댓글