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 |