Java - Stack & Queue

2020. 6. 30. 23:21Java

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
 
public class Ex5 {
 
    public static void main(String[] args) {
        
        /*
         * Stack(스택)        vs        Queue(큐)
         * 
         * 1.Stck
         * 데이터를 차례대로 쌓는 자료구조(TOP & BOTTOM)
         * ->FILO(First In Last Out) 또는 LIFO(Last In First Out)구조
         *     ->TOP 에서 데이터 추가, TOP 에서 데이터 제거(삽입/삭제가 한 곳에서 이루어짐)
         * -웹 브라우저의 뒤로/앞으로 기능, 응용프로그램의 Undo/Redo 기능에 주로 사용
         * (Stack 객체 2개를 활용하여 구현)
         * 
         * 2.Queue
         * 한 쪽에서 추가, 반대편에서 삭제가 이루어지는 자료구조
         * ->FIFO(First In First Out) 또는 LILO(Last In Last Out) 구조
         * 구현체 클래스 : LinkedList(List 와 Queue를 모두 구현한 클래스)
         * 은행 번호표, 응용프로그램의 최근 사용문서 기능에 주로 사용
         * 
         */
        
        Stack stack=new Stack();
        
        //push(Object o) : 요소 추가
        stack.push("1 - www.itwillbs.co.kr");
        stack.push("2 - www.naver.co.kr");
        stack.push("3 - www.google.co.kr");
        
        System.out.println("stack의 모든요소 : "+stack);
        
        //peek() : 스택 맨 위의 요소 확인(제거하지 않음)
        System.out.println("스택 맨 위의 요소(peek) : "+stack.peek());
        System.out.println("스택 맨 위의 요소(peek) : "+stack.peek());
        System.out.println("stack의 모든요소 : "+stack);
        
        //pop() : 스택 맨 위의 요소 확인(학인된 요소 제거함 = 꺼내기)
        System.out.println("스택 맨 위의 요소(pop) : "+stack.pop());
        System.out.println("스택 맨 위의 요소(pop) : "+stack.pop());
        System.out.println("stack의 모든요소 : "+stack);
        
        
        System.out.println("----------------------------");
        
        Queue q=new LinkedList();
        q.offer("1 - Ex.java");
        q.offer("2 - Test.jsp");
        q.offer("3 - member.sql");
        
        System.out.println("큐의 모든 요소 : "+q);
        
        
        //peek() : 큐의 가장 오래된 요소(먼저 추가된 요소) 확인(제거하지 않음)
        System.out.println("큐의 가장 오래된 요소 : "+q.peek());
        System.out.println("큐의 가장 오래된 요소 : "+q.peek());
        System.out.println("큐의 모든 요소 : "+q);
        
        //poll() : 큐의 가장 오래된 요소(먼저 추가된 요소) 확인(제거)
        System.out.println("큐의 가장 오래된 요소(꺼내기) : "+q.poll());
        System.out.println("큐의 가장 오래된 요소(꺼내기) : "+q.poll());
        System.out.println("큐의 모든 요소 : "+q);
        
        
    }
 
}
cs

Stack과 Queue를 배워보았는데  Stack 은 후입 선출 즉, 나중에 들어온 게 데이터가 먼저 나가는 구조이고

Queue는 선입선출로 먼저 입력된 데이터가 먼저 나가는 구조로 이루어져 있다.

웹 개발에서는 주로 Stack을 사용하고 Queue는 번호표 뽑기와 같은 기능을 하기 때문에 잘 사용을 하지는 않지만

둘 다 중요하다고 할 수 있다. 지금은 그저 이런 게 있다는 것만 배워 보았고, Stack & Queue의 메서드를 몇 가지 사용해보고 자료의 삭제와 추가로 후입 선출과 선입선출의 구조를 확인해 보았다. 

'Java' 카테고리의 다른 글

Java - Date,time,Calendar  (0) 2020.06.30
Java - Generic  (0) 2020.06.30
Java - Collection 프레임워크의 Map  (0) 2020.06.30
Java - BigInteger,BigDecimal  (0) 2020.06.30
Java - StringBuilder & StringBuffer  (0) 2020.06.30