본문 바로가기
Java

[Java] Stack, Queue 클래스

by 건복치 2020. 4. 21.
반응형

Stack

Stack 클래스는 LIFO 자료구조를 구현한 클래스이다.

List 컬렉션 클래스의 Vector 클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스 제공.

 

Hierarchy of Collection Framework (https://cornerstones.tech/java-collections/)

 

주요 메소드

리턴 타입 메소드 설명
E push(E item) 스택의 제일 상단에 객체 삽입
E peek() 스택의 제일 상단 요소(객체 / 제일 마지막으로 저장된) 반환(스택 제거 X)
E pop() 스택의 제일 상단 요소 반환 후 제거
boolean empty() 스택이 비어 있으면 true, 아니면 false
int search(Object o)

전달된 객체가 존재하는 위치의 인덱스를 반환

인덱스는 제일 상단에 있는 요소의 위치부터 0이 아닌 1부터 시작

 

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

*더욱 복잡하고 빠른 스택과 큐를 구현하고 싶다면 Deque 인터페이스를 구현한 ArrayDeque 클래스를 사용하면 됩니다.

단, ArrayDeque 클래스는 Stack 클래스와는 달리 search() 메소드는 지원하지 않습니다.

Queue

Queue 인터페이스는 FIFO 자료구조에서 사용되는 메소드를 정의하고 있다.

클래스로 구현된 스택과는 달리 자바에서 큐 메모리 구조는 별도의 인터페이스 형태로 제공된다.

 

Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList이다.

 

//LinkedList 객체를 Queue 인터페이스 타입으로 변환한 것
Queue<E> queue = new LinkedList<E>();

 

또 다른 이러한 Queue 인터페이스를 상속받는 하위 인터페이스는 다음과 같다.

1. Deque<E>

2. BlockingDeque<E>

3. BlockingQueue<E>

4. TransferQueue<E>

 

따라서 Queue 인터페이스를 직간접적으로 구현한 클래스는 상당히 많다.

그중에서도 Deque 인터페이스를 구현한 LinkedList 클래스가 큐 메모리 구조를 구현하는 데 가장 많이 사용된다.

 

주요 메소드

리턴 타입 메소드 설명
boolean offer(E e) 큐의 맨 뒤에 주어진 요소(객체)를 넣음
boolean add(E e)

큐의 맨 뒤에 주어진 요소(객체)를 넣음

삽입 성공 시 true 반환, 큐에 여유 공간이 없어 실패 시  IllegalStateException을 발생

E peek()

큐의 맨 앞에 있는(제일 먼저 저장된) 요소 반환

큐가 비었을 시 null 반환

E poll() 큐의 맨 앞에 있는 요소 반환 후 제거
E remove()

큐의 맨 앞에 있는 요소 제거

E element()

큐의 맨 앞에 있는 요소 반환

 

이것이 자바다 - 신용권의 Java 프로그래밍 정복2
http://tcpschool.com/java/java_collectionFramework_stackQueue [Stack과 Queue]

 

반응형

댓글