티스토리 뷰
728x90
반응형
Queue는 (대기)줄이라는 의미를 가지고 있다.
위 그림에서 보는 것처럼 데이터의 입력과 출력 방향이 따로 정해져 있으며,
먼저 들어간 데이터가 먼저 나오는 선입 선출(FIFO - First In First Out) 구조를 가지고 있다.
또한 스택의 경우와 마찬가지로 데이터의 입출력을 하나씩만 할 수 있다는 특징도 가지고 있다.
추가로 큐에 데이터를 집어넣는 동작을 'enqueue'라고 하며, 데이터를 빼는 동작을 'dequeue'라고 부른다.
주로 프린터의 출력 순서 알고리즘과 같이 이벤트의 실행 순서를 규칙적으로 만들기 위해 사용되는 큐는
태생적으로 LinkedList와 함께 사용된다.
import java.util.LinkedList; //import
import java.util.Queue; //import
Queue<Integer> queue = new LinkedList<>(); //Integer형 큐 선언
위와 같이 LinkedList와 Queue 클래스를 import 한 후 매개변수의 타입에 맞춰 선언하면 된다.
이어서 큐 클래스에서 자주 사용되는 메서드를 알아보자.
add(), offer()
add()와 offer()는 큐에 값을 추가하고 싶을 때 사용한다.
queue.add(1); // queue에 값 1 추가
queue.add(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
queue.offer(4); // queue에 값 4 추가
poll(), remove(), clear()
poll()과 remove()는 큐에서 값을 제거하고 싶을 때 사용한다.
큐 전체의 값을 제거하고 초기화하고 싶을 경우엔 clear()를 사용한다.
queue.add(1); // queue에 값 1 추가
queue.add(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
queue.offer(4); // queue에 값 4 추가
queue.poll(); // 1 제거
queue.remove(); // 2 제거
queue.clear(); // queue의 전체 값 제거(초기화)
위에서 소개했던 대로 입력된 순서대로 제거되는 것을 확인할 수 있다.
peek()
현재 큐에 있는 첫 번째 요소를 확인하고 싶을 때 사용한다.
queue.add(1); // queue에 값 1 추가
queue.add(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
queue.offer(4); // queue에 값 4 추가
queue.poll(); // 1 제거
queue.remove(); // 2 제거
System.out.println(queue.peek()); // 3 출력
size()
현재 큐의 크기를 출력하고 싶을 때 사용한다.
queue.add(1); // queue에 값 1 추가
queue.add(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
queue.offer(4); // queue에 값 4 추가
queue.poll(); // 1 제거
queue.remove(); // 2 제거
System.out.println(queue.size()); // 2 출력
반응형
'Java+Spring > Java' 카테고리의 다른 글
[Java]시간 복잡도(Time Complexity), 빅-오 표기법(Big-O Notation) (0) | 2022.07.28 |
---|---|
[Java]자료구조 - Graph (0) | 2022.07.27 |
[Java]자료구조 - Tree (0) | 2022.07.26 |
[Java]자료구조 - Stack (0) | 2022.07.25 |
[Java]배열 내용 출력하기 (Arrays.toString()) (0) | 2022.07.24 |
[Java]재귀 함수(Recursive Functions) 예제 (0) | 2022.07.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 리스트
- 세계여행
- 동적계획법
- 자바
- 맛집
- 파이썬
- BOJ
- 야경
- 여행
- a6000
- 중남미
- Backjoon
- spring
- java
- 기술면접
- RX100M5
- 세계일주
- 칼이사
- 남미
- 스프링
- 스트림
- 유럽
- 백준
- Algorithm
- 세모
- 지지
- Python
- 면접 준비
- 알고리즘
- 유럽여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함