본문 바로가기
Language/Java

Stack(스택) vs Queue(큐)

by 태윤2 2020. 6. 25.

1. Stack 

 데이터를 차례대로 쌓는 자료구조 ( TOP & BOTTOM)

=> FILO(First In Last Out) 또는 LIFO(Last In First Out) 구조

 TOP 에서 데이터 추가, TOP 에서 데이터 제거(삽입/삭제가 한 곳에서 이루어짐)

 웹브라우저의 뒤로/앞으로 기능, 응용프로그램의 Undo/Redo 기능에 주로 사용
 (스택 객체 2개를 활용하여 구현)

 

2. Queue

한 쪽에서 추가, 반대편에서 삭제가 이루어지는 자료구조
FIFO(First In First Out) 또는 LILO(Last In Last Out) 구조
구현체 클래스 : LinkedList(List 와 Queue 를 모두 구현한 클래스)
은행 번호표, 응용프로그램의 최근 사용 문서 기능에 주로 사용

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Stack stack = new Stack();
 
// push(Object o) : 요소 추가
    stack.push("1 - www.itwillbs.co.kr");
    stack.push("2 - www.nave.co.kr");
    stack.push("3 - www.google.co.kr");
 
// peek() : 스택 맨 위의요소 확인(제거하지 않음)
        System.out.println("스택 맨 위의 요소 (peek) : " + stack.peek());
        System.out.println("스택 맨 위의 요소 (peek) : " + stack.peek());
        System.out.println("스택의 모든 요소 : " + stack);
 
// 스택의 모든 요소 : [1 - www.itwillbs.co.kr, 2 - www.nave.co.kr, 3 - www.google.co.kr]
 
// pop() : 스택 맨 위의 요소 확인( 확인된 요소 제거함 = 꺼내기)
        System.out.println("스택 맨 위의 요소 (pop) : " + stack.pop());
        System.out.println("스택 맨 위의 요소 (pop) : " + stack.pop());
        System.out.println("스택의 모든 요소 : " + stack);
 
// 스택의 모든 요소 : [1 - www.itwillbs.co.kr]
 
Queue q = new LinkedList(); // Queue 도 구현하고 Collection 도 구현받은 클래스
 
    // offer(Object o); : 요소추가
        q.offer("1 - Ex.java");
        q.offer("2 - Test.jsp");
        q.offer("3 - Memer.sql");
 
        // peek() : 큐의 가장 오래된 요소(먼저 추가된 요소) 확인(제거하지 않음)
        System.out.println("큐의 가장 오래된 요소 : "+ q.peek());
        System.out.println("큐의 가장 오래된 요소 : "+ q.peek());
        System.out.println("큐의 모든 요소 : "+ q);
 
// 큐의 모든 요소 : [1 - Ex.java, 2 - Test.jsp, 3 - Memer.sql]
 
        // pop() : 큐의 가장 오래된 요소(먼저 추가된 요소) 확인(제거)
        System.out.println("큐의 가장 오래된 요소 (꺼내기) : "+ q.poll());
        System.out.println("큐의 가장 오래된 요소 (꺼내기) : "+ q.poll());
        System.out.println("큐의 모든 요소 : "+ q);
 
// 큐의 모든 요소 : [3 - Memer.sql]
cs

 

 

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

시간 관련 클래스 및 패키지  (0) 2020.06.25
제네릭(Generic)  (0) 2020.06.25
Map 인터페이스 - Collection 프레임워크  (0) 2020.06.25
enum 타입(열거형 데이터 타입)  (0) 2020.06.24
BigInteger & BigDecimal  (0) 2020.06.24