Hyunebee

Stack, Queue 본문

Java/Java의 정석

Stack, Queue

Hyunebee 2022. 3. 7. 18:03

Stack, Queue

https://gohighbrow.com/stacks-and-queues/

Stack은 선입후출 구조이고 Queue는 선입선출구조인다. 

순차적으로 데이터를 추가하고 삭제하는 Stack에는 ArrayList와 같은 배열기반의 컬렉션클래스가 적합하다.

Queue는 데이터를 꺼낼때 마다 첫번째가 삭제됨으로 LinkedList가 더 적합하다. ArrayList로 할경우 삭제되면서 빈공을 채우기 위해 배열의 복사가 일어남으로 메모리에 낭비가 있다. 

 

ex )

import java.util.*;

class StackQueueEx {
    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.empty()) {
            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는 Interface로 구현

 

'Java > Java의 정석' 카테고리의 다른 글

Set, Map  (0) 2022.03.08
Arrays  (0) 2022.03.07
Collection Framework  (0) 2022.03.06
abstract, interface  (0) 2022.03.06
다형성  (0) 2022.03.05