본문 바로가기
DEV/Java

[자바] Stack(스택)과 Queue(큐)

by 어쩌다개발 2023. 2. 12.
반응형

Stack 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내는 LIFO(Last In First Out) 구조
Queue 큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out) 구조

스택은 들어간 순서의 역순으로 꺼내어진다. 반대로 큐는 들어간 순서대로 꺼내게 된다.
순차적으로 데이터를 추가하고 삭제하는 스택에는 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하다.
큐는 항상 첫 번째 저장된 데이터를 삭제하고 꺼내므로 배열기반의 ArrayList 클래스를 사용하면 데이터를 꺼낼때마다 빈 공간을 채우기 위해 데이터의 복사가 발생하므로 비효율적이다. 그래서 큐는 LinkedList로 구현하는 것이 적합하다.

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class StackQueueEx {
    public static void main(String[] args) {
        Stack st = new Stack<Object>();
        Queue q = new LinkedList();

        st.push(0);
        st.push(1);
        st.push(2);

        q.offer(1);
        q.offer(2);
        q.offer(3);

        System.out.println("==Stack==");
        while (!st.empty()) {
            System.out.println(st.pop());
        }

        System.out.println(("==Queue"));
        while (!q.isEmpty()) {
            System.out.println(q.poll());
        }
    }
}​

실행결과

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

 

참고 자바의정석

반응형

'DEV > Java' 카테고리의 다른 글

[자바] Comparator 와 Comparable  (3) 2023.02.14
[자바] Arrays  (7) 2023.02.14
[자바] LinkedList  (3) 2023.02.11
[자바]ArrayList  (6) 2023.02.06
[자바] 컬렉션 프레임워크(Collections Framework)  (4) 2023.02.05

댓글