Stack과 Queue

Stack은 LIFO(Last in first out) Queue는 FIFO(First in first out)으로 되어있다.

Stack의 메서드

메서드 설명
boolean empty( ) Stack 이 비어있는지 알려줌
Object peek( ) Stack 의 맨 위에 저장된 객체를 반환pop( ) 과 달리 Stack 에서 객체를 꺼내지 않음(비었을 때는 EmptyStackException 발생)
Object pop( ) Stack 의 맨 위에 저장된 객체를 꺼냄(비었을 때는 EmptyStackException 발생)
Object push(Object item) Stack 에 객체( item )를 저장
int search(Object o) Stack 에서 주어진 객체( o )를 찾아서 그 위치를 반환, 못 찾으면 -1 을 반환(배열과 달리 위치가 1부터 시작)

Queue의 메서드

메서드 설 명
boolean add(Object o) 지정된 객체를 Queue 에 추가 성공하면 true를 반환, 저장공간이 부족하면 IllegalStateException 발생
Object remove( ) Queue 에서 객체를 꺼내 반환. 비어있으면 NoSuchElementException 발생
Object element( ) 삭제없이 요소를 읽어옴 peek 와 달리 Queue 가 비었을때 NoSuchElementException 발생
boolean offer(Object o) Queue 에 객체를 저장 성공하면 true, 실패하면 false를 반환
Object poll( ) Queue 에서 객체를 꺼내서 반환. 비어있으면 null을 반환
Object peek( ) 삭제없이 요소를 읽어온다. Queue가 비어있으면 null을 반환
예제
package Example;

import java.util.*;

public class Example {
    public static void main(String[] args) {
        Stack st = new Stack();
        Queue q = new LinkedList();    //Queue의 인터페이스 구현체인 LinkedList를 사용
        
        st.push("0");
        st.push("1");
        st.push("2");
        
        q.offer("0");
        q.offer("1");
        q.offer("2");
        
        System.out.println("=== Stack ===");
        while(!st.isEmpty()) {
            System.out.println(st.pop());
        }
        
        System.out.println("=== Queue ===");
        while(!q.isEmpty()) {
            System.out.println(q.poll());
        }
    }
}

결과값

===Stack===
2
1
0
===Queue===
0
1
2

자베에서는 스택을 Stack클래스로 구현하여 제공하지만 큐는 Queue인터페이스만 있고 별도의 클래스가 없다. 그래서 Queue인터페이스를 구현한 클래스들을 사용해야 한다.

Comment and share

  • page 1 of 1

Hyeon Soo Ahn

author.bio


author.job