본문 바로가기

Java/문법

17 - 6장 Queue<E> 컬렉션 인터페이스

1. Queue<E> 컬렉션 특징

 

-Collection<E> <- Queue<E> <- LinkedList<E>

-Collection<E>에게서 상속된 인터페이스

-LinkedList<E>가 Queue<E> 인터페이스를 구현

 

-선입선출(FIFO:first in frist out)의 자료구조

-먼저 저장된 데이터가 먼저 출력

 ex) 이벤트 큐 - 키보드 이벤트가 발생하면 각 이벤트는 발생한 순서대로 이벤트 큐에 저장되고, CPU는 이벤트 큐에서 이벤트를 1개씩 꺼내 처리 

 

- 데이터가 E1,E2,E3,E4 순으로 Queue<E>에 입력될 때 꺼내려면 입력과 동일한 순서로 꺼내야 함

- 'Linked'가 붙은 컬렉션 -> 입력 순서 정보를 저장하기 때문에 입력 순서와 출력 순서가 동일 (Queue의 특징)

 

2. Queue<E>의 주요 메서드

 

구분 메서드명 기능
예외 처리 기능
미포함 메서드
데이터 추가 add(E item) 매개변수인 item을 Queue에 추가
데이터 확인 element() 가장 상위에 있는 원솟값 리턴
(데이터는 변화 없음, 데이터가 하나도 없을 때 NoSuchElementException 발생)
데이터 추출 remove() 가장 상위에 있는 원솟값 꺼내기
(꺼낼 데이터가 없을 때 NoSuchElementException 발생)
예외 처리 기능
포함 메서드
데이터 추가 offer(E item) 매개변수인 item을 Queue에 추가
데이터 확인 peek() 가장 상위에 있는 원솟값 리턴
(데이터는 변화없음, 데이터가 하나도 없을 때 null을 리턴)
데이터 추출 poll() 가장 상위에 있는 원솟값 꺼내기
(꺼낼 데이터 없을 때 null을 리턴)

- add() 메서드만 java.util.Collection인터페이스에 정의

- 나머지는 java.util.Queue 인터페이스에 정의 

package CollectionFramework;

import java.util.LinkedList;
import java.util.Queue;

public class QueueMethod {
	public static void main(String[] args) {
		//1.예외 처리 기능 미포함 메서드
		Queue<Integer> queue1 = new LinkedList<Integer>();
		//System.out.println(queue1.element()); //NoSuchElementException
		//1-1 add(E item)
		queue1.add(3);
		queue1.add(4);
		queue1.add(5);
		
		//1-2 element()
		System.out.println(queue1.element());
		
		//1-3 E remove()
		System.out.println(queue1.remove());
		System.out.println(queue1.remove());
		System.out.println(queue1.remove());
		//System.out.println(queue1.remove()); //NoSuchElementException
		System.out.println();
		
		//2.예외 처리 기능 포함 메서드
		Queue<Integer> queue2 = new LinkedList<Integer>();
		System.out.println(queue2.peek());
		
		//2-1 offer(E item)
		queue2.offer(3);
		queue2.offer(4);
		queue2.offer(5);
		
		//2-2 E peek()
		System.out.println(queue2.peek());
		
		//2-3 E poll()
		System.out.println(queue2.poll());
		System.out.println(queue2.poll());
		System.out.println(queue2.poll());
		System.out.println(queue2.poll());
	}
}

'Java > 문법' 카테고리의 다른 글

18 - 2 장 람다식의 활용  (0) 2023.06.24
18 - 1장 람다식  (0) 2023.06.24
17 - 5장 Stack<E> 컬렉션 클래스  (0) 2023.06.19
17 - 4 장 Map<K,V> 컬렉션 인터페이스  (0) 2023.06.18
17 - 3장 Set<E> 컬렉션 인터페이스 (2)  (2) 2023.06.18