Ⅴ. Queue
1. Queue(큐)
- 일자로 된 자료구조로, 선입선출 구조(FIFO : First In First Out)를 지님
2. Queue의 특징
- 먼저 들어간 것이 반드시 먼저 나옴
- LinkedList 클래스는 Queue를 다중상속함
※ LinkedList는 Queue로 참조하면 Queue의 기능을, List로 참조하면 List의 기능을 가짐
- 인덱스가 없음
3. Queue의 기능
- offer( ) : 데이터를 삽입
- 선입선출 관련 2 개의 메소드 : peek & poll
- peek( ) : 당장 꺼낼 수 있는 것을 확인
- poll( ) : 그 것을 실제로 꺼냄
// Example1
package sample;
import java.util.*;
// Queue
public class Main {
public static void main(String[] args) {
// 제네릭 기반
// Queue로 구현된 자식클래스로 new 해야 함
// LinkedList는 Queue로 참조하면 Queue의 기능을, List로 참조하면 List의 기능을 가짐
Queue<String> a = new LinkedList<>();
// Queue에 데이터를 삽일할 때는 offer()
a.offer("C language");
a.offer("C++");
a.offer("python");
a.offer("Java");
a.offer("JavaScript");
// 선입선출 관련 두 개의 메소드 : peek, poll
System.out.println("다음 꺼낼 거 : " + a.peek()); // 다음 꺼낼 거 : C language
System.out.println("실게 꺼냄 : " + a.poll()); // 실제 꺼냄 : C language
System.out.println("다음 꺼낼 거 : " + a.peek()); // 다음 꺼낼 거 : C++
System.out.println("실게 꺼냄 : " + a.poll()); // 실제 꺼냄 : C++
System.out.println("다음 꺼낼 거 : " + a.peek()); // 다음 꺼낼 거 : python
System.out.println("실게 꺼냄 : " + a.poll()); // 실제 꺼냄 : python
System.out.println("다음 꺼낼 거 : " + a.peek()); // 다음 꺼낼 거 : Java
System.out.println("실게 꺼냄 : " + a.poll()); // 실제 꺼냄 : Java
System.out.println("다음 꺼낼 거 : " + a.peek()); // 다음 꺼낼 거 : JavaScript
System.out.println("실게 꺼냄 : " + a.poll()); // 실제 꺼냄 : JavaScript
// 요소가 없을 시, null 반환 : 실수가 점검되지 않음
System.out.println("다음 꺼낼 거 : " + a.peek()); // 다음 꺼낼 거 : null
System.out.println("실게 꺼냄 : " + a.poll()); // 실제 꺼냄 : null
}
}
- Queue에는 offer와 동일한 역할을 하는 add가 있음
- peek → element , poll → remove
※ 여기에서 쓰는 메소드들은 사용자가 코드에서 실수를 범할 시, 예외를 발생시킴
package day16;
import java.util.*;
// Queue
public class Queue02 {
public static void main(String[] args) {
Queue<String> a = new LinkedList<>();
// Queue에는 offer()와 동일한 역할을 하는 add()가 있음
a.add("C language");
a.add("C++");
a.add("python");
a.add("Java");
a.add("JavaScript");
// peek() → element() , poll() → remove()
System.out.println("다음 꺼낼 거 : " + a.element()); // 다음 꺼낼 거 : C language
System.out.println("실게 꺼냄 : " + a.remove()); // 실제 꺼냄 : C language
System.out.println("다음 꺼낼 거 : " + a.element()); // 다음 꺼낼 거 : C++
System.out.println("실게 꺼냄 : " + a.remove()); // 실제 꺼냄 : C++
System.out.println("다음 꺼낼 거 : " + a.element()); // 다음 꺼낼 거 : python
System.out.println("실게 꺼냄 : " + a.remove()); // 실제 꺼냄 : python
System.out.println("다음 꺼낼 거 : " + a.element()); // 다음 꺼낼 거 : Java
System.out.println("실게 꺼냄 : " + a.remove()); // 실제 꺼냄 : Java
System.out.println("다음 꺼낼 거 : " + a.element()); // 다음 꺼낼 거 : JavaScript
System.out.println("실게 꺼냄 : " + a.remove()); // 실제 꺼냄 : JavaScript
// 예외 발생하므로 예외처리 (예외 발생시, '예외입니다'라고 알림)
try {
System.out.println("다음 꺼낼 거 : " + a.element());
System.out.println("실게 꺼냄 : " + a.remove());
} catch(Exception e) {
System.out.println("예외입니다"); // 예외입니다
}
}
}
'Programming Language > Java' 카테고리의 다른 글
랜덤 클래스(Random Class)와 사용자 입력(User Input) (0) | 2022.07.20 |
---|---|
컬렉션 프레임워크 - 6. Stack, Deque (0) | 2022.07.20 |
컬렉션 프레임워크 - 4. Map (0) | 2022.07.19 |
컬렉션 프레임워크 - 3. Set (0) | 2022.07.19 |
컬렉션 프레임워크 - 2. List (0) | 2022.07.19 |