본문 바로가기

언어공부/Java

자바 스택(Stack), 큐(Queue)

자바 Stack, Queue에 대해서 알아보자.

스택 (Stack)

스택은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO(Last In First Out)구조로 되어 있다.

스택의 구조는 양 옆과 바닥이 막혀 있어서 한 방향으로 뺄 수 있는 구조이다.

예를들어 스택에 0, 1, 2의 순서로 데이터를 넣었다면 꺼낼 때는 2, 1, 0의 순서로 꺼내게 된다. 즉 넣은 순서와 꺼낸 순서가 뒤집어지게 되는 것이다. 스택은 순차적으로 데이터를 추가하고 삭제하는 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하다.

 

스택의 활용 예로는 수식계산, 수식괄호검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로 가 있다.

 

ex)

 

출력화면.

 

 


큐(Queue)

큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out)구조로 되어 있다.

큐는 양 옆만 막혀 있고 위아래로 뚫려있어서 한 방향으로 넣고 한 방향으로 빼는 파이프와 같은 구조로 되어있다.

예를들어 큐에 0, 1, 2의 순서로 데이터를 넣었다면 꺼낼 때도 0, 1, 2의 순서로 꺼내게 된다. 순서의 변경 없이 먼저 넣은 것을 먼저 꺼내게 되는 것이다. 큐는 ArrayList보다 데이터의 추가/삭제가 쉬운 LinkedList로 구현하는 것이 더 적합하다.

 

큐의 활용 예로는 최근사용문서, 인쇄작업 대기목록, 버퍼 등이 있다.

 

ex)

 

출력화면.