개발놀이터

자바 Stack 과 Queue 본문

Java

자바 Stack 과 Queue

마늘냄새폴폴 2021. 8. 9. 04:57

*Stack<E> 클래스
Stack 클래스는 List 컬렉션 클래스의 Vector 클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스를 제공한다.

스택 메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 후입선출의 시멘틱을 따르는 자료구조이다.
즉, 가장 나중에 저장된 데이터가 가장 먼저 인출되는 구조이다.

Stack 클래스는 스택 메모리 구조를 표현하기 위해, Vector 클래스의 메소드를 5개만 상속받아 사용한다.

boolean empty() : 해당 스택이 비어있으면 true를 비어있지 않으면 false를 반환함
E.peek() : 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환함.
E.pop() : 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환하고, 해당 요소를 스택에서 제거함.
E.push(E.item) : 해당 스택의 제일 상단에 전달된 요소를 삽입함.
int search(Object o) : 해당 스택에서 전달된 객체가 존재하는 위치의 인덱스를 반환함 이때 인덱스는 제일 상단에 있는 요소의 위치부터 0이 아닌 1부터 시작함.


*Queue<E> 인터페이스
클래스로 구현된 스택과는 다르게 자바에서 큐 메모리 구조는 별도의 인터페이스 형태로 제공된다.
이러한 Queue 인터페이스를 상속받는 하위 인터페이스는 다음과 같다.

1. Deque<E>
2. BlockingDeque<E>
3. BlockingQueue<E>
4. TransferQueue<E>

따라서 Queue 인터페이스를 직간접적으로 구현한 클래스는 상당히 많다.
그중에서도 Deque 인터페이스를 구현한 LinkedList 클래스가 큐 메모리 구조를 구현하는데에 가장 많이 사용된다.

큐 메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 선입선출의 시멘틱을 따르는 자료구조이다.
즉, 가장먼저 저장된 데이터가 가장먼저 인출되는 구조이다.

Queue 인터페이스는 큐 메모리 구조를 표현하기 위해 다음과같은 Collection 인터페이스 메소드만을 상속받아 사용한다.

boolean add(E e) : 해당 큐의 맨 뒤에 전달된 요소를 삽입함, 만약 삽입에 성공하면 true를 반환하고 큐에 여유 공간이 없어서 삽입에 실패하면 IllegalStateException을 발생시킴
E element() : 해당 큐의 맨 앞에있는 요소를 반환함
boolean offer(E e) : 해당 큐의 맨 뒤에 전달된 요소를 삽입함
E.peek() : 해당 큐의 맨 앞에있는(제일 먼저 저장된) 요소를 반환함, 만약 큐가 비어있으면 null을 반환함
E.poll() : 해당 큐의 맨 앞에있는(제일 먼저 저장된) 요소를 반환하고, 해당 요소를 큐에서 제거함, 만약 큐가 비어있으면 null을 반환함
E.remove()) : 해당 큐의 맨 앞에있는(제일 먼저 저장된) 요소를 제거함.

'Java' 카테고리의 다른 글

자바 람다식표현  (0) 2021.08.16
자바 Map컬렉션 클래스  (0) 2021.08.10
자바 List 컬렉션 클래스  (0) 2021.08.09
자바 제네릭  (0) 2021.08.09
자바 인터페이스  (0) 2021.08.09