Blog

[자료구조] 큐(Queue)란?

Category
Author
Tags
PinOnMain
1 more property
Queue?

Queue란?

자료구조의 일종으로서 리스트성의 자료나 나열되는 자료, 순환적인 자료, 대기열 등에 사용됩니다.
Queue는 선입선출의 형식이며, "먼저 들어온 놈이 먼저 나간다" 라고 보시면 됩니다.FIFO(First In First Out) 이런 식으로 표현하기도 합니다.
Queue는 특이하게 contains() 함수를 통해 어떠한 값이 포함되어있는지는 확인할 수 있지만 Index의 개념이 없어서 어떠한 값이 몇 번째에 있는지는 알 수 없습니다.
Queue의 선언 방법
Queue<Integer> que = new LinkedList<Integer>();
Java
복사
Queue<객체> 변수명 = new LinkedList<객체>();
Queue와 LinkedList 유틸을 모두 import해줘야 정상적으로 사용 가능합니다.
Queue에 값을 추가하는 방법(add와 offer의 차이점)
que.offer(i); que.add(i);
Java
복사
Queue변수.offer(값);
Queue변수.add(값);이렇게 2가지 방법이 있으며, 과정은 비슷하나 결과가 다릅니다.
값 추가에 실패했을 경우
add - IllegalStateException
offer - false
를 리턴하게 됩니다. 이런 실패 경우의 차이가 있기 떄문에 offer를 사용하는 것이 더 좋다고 합니다.
Queue 값 출력
que.peek();
Java
복사
Queue변수.peek();
이렇게 사용할 경우 현재 Queue의 가장 먼저 들어간 값, 가장 먼저 출력될 값이 출력되게 됩니다.
Queue가 현재 비어있을 경우 null을 return하기 때문에, 조건식에서도 사용됩니다.
Queue 값 삭제(출력)
que.poll(); que.clear(); que.remove();
Java
복사
Queue변수.poll();
Queue변수.clear();
Queue변수.remover();
와 같이 사용할 수 있으며, 각각의 차이를 확인해보겠습니다.
clear - Queue를 비움
poll - 첫번째 값 삭제
remove - 첫번째 값 삭제
add와 offer의 차이처럼 poll과 remove에도 차이점이 존재합니다.
값 출력 및 삭제할 때,
poll은 NoSuchElementException
remove는 null을 return합니다.
poll과 remove는 값이 있을 경우에는 첫번째 값을 출력하면서 삭제처리를 하기 때문에, 출력이나 값 비교 등에도 사용이 가능합니다.