Post

Queue

먼저 들어간 데이터(data)가 먼저 나오는 FIFO(First In First Out) 혹은 LILO(Last In Last Out)가 특징

이 자료 구조는 입력과 출력의 방향이 고정되어 있으며, 두 곳으로 접근이 가능

Queue에 데이터를 넣는 것을 ‘enqueue’, 데이터를 꺼내는 것을 ‘dequeue’라고 함

Queue의 특징

1. FIFO (First In First Out)

먼저 들어간 데이터가 제일 처음에 나오는 선입선출의 구조를 가지고 있음

2. 데이터는 하나씩 넣고 뺄 수 있습니다.

Queue 자료 구조는 데이터가 아무리 많이 있어도 하나씩 데이터를 넣고, 뺍니다.

한꺼번에 여러 개를 넣거나 뺄 수 없습니다.

3. 두 개의 입출력 방향을 가지고 있습니다.

Queue 자료 구조는 데이터의 입력, 출력 방향이 다릅니다.

만약 입출력 방향이 같다면 Queue 자료 구조라고 볼 수 없습니다.

Queue 자료 구조의 장점

1. 자료를 먼저 넣은 순서대로 데이터를 꺼내서 처리할 수 있다.

이러한 자료 구조의 특징으로 처리해야 할 작업이 여러 개 있을 경우, 효율적인 처리가 가능하다

2. Queue는 삽입과 삭제가 각각 양 끝에서 이루어지며 원소를 삭제하는 연산이 없으므로

다른 자료 구조에 비해 상대적으로 빠른 속도를 보입니다.

3. 자바에서는 큐를 기본 자료구조로 제공하기 때문에, 별도의 라이브러리나 모듈을 설치할 필요가 없습니다.

Queue 자료 구조의 단점

1. Queue는 자료 구조의 가장 앞에서 데이터를 꺼내는 연산과 가장 뒤에서 데이터를 추가하는 연산만 가능하기 때문에, 중간에 있는 데이터를 조회하거나 수정하는 연산에는 적합하지 않다.

2. 크기 제한이 없어서 메모리의 낭비가 발생 (Java에서 제공하는 Queue 인터페이스의 경우)

3. iterator() 메서드가 지원되지 않는다. (Java에서 제공하는 Queue 인터페이스의 경우)

queue 인터페이스가 FIFO(First-In-First-Out) 구조를 갖기 때문에

큐의 데이터를 순회할 때는, peek() 메서드와 poll() 메서드를 사용하여 각각의 데이터를 차례대로 가져와야 합니다.

3. remove(Object o) 메서드의 동작이 불명확하다. (Java에서 제공하는 Queue 인터페이스의 경우)

대신 poll() 메서드를 사용하여 원하는 객체를 삭제할 수 있습니다.

This post is licensed under CC BY 4.0 by the author.