반응형

Stack 


▶ 여러 개의 데이터 항목들이 일정한 순서로 나열된 자료구조

▶ 한쪽 끝에서만 새로운 항목을 삽입하거나 기존의 항목을 제거할 수 있다.

(L)ast (I)n (F)irst (O)ut ==> LIFO방식

▶Vector 클래스를 상속받아서 구현된다.



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
package stack;
 
import java.util.Stack;
import java.util.Vector;
 
public class StackTest {
    public static void main(String[] args) {
        // stack은 Vector를 상속받는다.
        //Vector<String> stack = new Stack<String>();
        
        Stack<String> s = new Stack<String>();
        
//        s.push("a");
//        s.push("b");
//        s.push("c");
//        
//        while(!s.isEmpty()) {
//            String value = s.pop();
//            System.out.println(value);
//        }
//        
//        s.pop(); // Exception occurs when stack is empty
 
        s.push("a");
        s.push("b");
        s.push("c");
        
        System.out.println(s.pop());
        System.out.println(s.peek()); // 제일 위에 어떤 값이 있는지 확인만 해줌, pop은 안함..
        System.out.println(s.pop());
    }
}
 
cs


Queue


▶ 리스트와 유사한 자료구조

▶ 항목들의 리스트에서 가장 마지막에 새로운 항목이 추가된다.

▶ 기존 항목의 제거는 리스트의 처음에서 일어난다.

(F)irst (I)n (F)irst (O)ut ==> FIFO방식

▶ LinkedList를 상속받아서 구현




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
package queue;
 
import java.util.LinkedList;
import java.util.Queue;
 
public class QueueTest {
    public static void main(String[] args) {
        // Queue는 LinkedList를 상속받는다.
        // Queue ==> (F)irst (O)ut (F)irst (I)n
        // Queue는 KAFKA(Message Queue)에서 많이 사용한다.
        Queue<String> q = new LinkedList<String>();
        
        //데이터 삽입
        q.offer("a");
        q.offer("b");
        q.offer("c");
        
        // 데이터 출력
        while(!q.isEmpty()) {
            String value = q.poll();
            System.out.println(value);
        }
    }
}
 
cs


반응형

+ Recent posts