본문 바로가기
JAVA

Java - Stack 과 Queue

by winteringg 2022. 11. 5.

1. Stack
1) LIFO (후입선출, Last In First Out) : 나중에 넣은 객체가 먼저 빠져나가는 자료 구조.
2) LIFO 자료구조를 구현한 클래스로 Stack 을 응용한 대표적인 예가 JVM 스택 메모리.
3) 스택의 활용 예시) 수식 계산, 수식 괄호 검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로

Stack 구조

4) 주요 메서드

리턴타입 메서드 설명
boolean empty() 스택이 비어있는 지 알려줌.
Object push(Object item) 주어진 객체(item)를 스택에 넣음.
Object peek() 스택의 맨 위 객체를 가져옴. 객체를 스택에서 제거하지는 않음.
Object pop() 스택의 맨 위 객체를 가져옴. 객체를 스택에서 제거함.
int search(Object o) 스택에서 주어진 객체(o)를 찾아서 그 위치를 반환. 못찾으면 -1 반환.
(배열과 달리 위치는 0이 아닌 1부터 시작함)

5) Stack 객체 생성

Stack<E> stack = new Stack<E>();



2. Queue

1) FIFO (선입선출, First In First Out) : 먼저 넣은 객체가 먼저 빠져나가는 자료 구조.
2) 큐의 활용 예시) 최근 사용 문서, 인쇄작업 대기목록
3) Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList 임.

Queue 구조

4) 주요 메서드

리턴타입 메서드 설명
boolean offer(Object o) 주어진 객체를 큐에 저장. 성공하면 true 반환.
boolean add(Object o) 주어진 객체를 큐에 추가. 성공하면 true 반환.
저장공간이 부족하면 예외 발생.(IllegalStateException)
Object poll() 큐에서 객체를 꺼내 반환. 객체를 큐에서 제거함. 
비어있으면 null 반환
Object remove() 큐에서 객체를 꺼내 반환. 객체를 큐에서 제거함.
비어있으면 예외 발생 (NosuchElementException)
Object peek() 객체 하나를 가져옴. 객체를 큐에서 제거하지는 않음.
비어있으면 null 반환
Object element() 삭제 없이 요소를 읽어옴.
비어있으면 예외 발생. (NosuchElementException)


5) Queue 는 인터페이스 이기 때문에 객체 생성이 안되고, Queue를 구현한 클래스를 사용해야 함.

Queue 를 구현한 클래스들 (Java API)


6) Queue 인터페이스를 구현한 클래스 LinkedList

Queue<E> queue = new LinkedList<E>();

 

 

 

 

참고 : [한빛미디어] 이것이 자바다 (신용권의 Java 프로그래밍 정복) Chapter 15.컬렉션 프레임워크
참고 : [도우출판] JAVA의 정석(3ND EDITION)-자바의 정석 최신 Java 8.0 포함 Chapter 11.컬렉션 프레임워크

'JAVA' 카테고리의 다른 글

Java - 열거 (enum)  (0) 2022.11.21
JAVA - Stream (스트림)  (0) 2022.10.29
Java - Arrays 클래스  (0) 2022.10.29
Java - 다형성, instanceof  (0) 2022.10.29
Java - 제네릭스 (Generics)  (0) 2022.10.29

댓글