ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 스택(Stack)과 큐(Queue)
    Java/용어 2020. 3. 7. 18:10
    반응형

    스택

     - LIFO 구조, 마지막에 저장된 것을 제일 먼저 꺼냅니다.

     - FIFO 주고, 제일 먼저 저장한 것을 제일 먼저 꺼냅니다.

     

     

    스택 메서드

    • push

     Stack에 객체를 저장합니다.

    • pop

     Stack의 맨 위에 저장된 객체를 꺼냅니다.

    • peek

     Stack의 맨 위에 저장된 객체를 반환합니다. Stack에서 꺼내지는 않습니다. 비었을 때 null을 반환합니다.

    • empty

     Stack이 비어있는지 알려줍니다. 있으면 true, 없으면 false를 반환합니다. 

    • search

     Stack에서 주어진 객체를 찾아서 그 위치를 반환합니다. (배열과는 달리 1부터 시작합니다.)

     

     

    큐 메서드

    • add

     Queue에 객체를 저장합니다. 

    성공하면 true, 실패하면 false를 반환합니다.

    • element

     삭제없이 저장된 요소를 읽어옵니다. peek와 다른 점은 queue가 비었을 때 Exception을 발생시킵니다. (peek()는 null을 반환합니다.) 

    • offer

     Queue에 객체를 저장합니다. 성공하면 true, 실패하면 false를 반환합니다.

    • peek

     삭제없이 읽어옵니다. Queue가 비었을 때 null을 반환합니다.

    • poll

     Queue에서 꺼내옵니다. 비어있으면 null을 반환합니다.

    • remove

     Queue에서 꺼내옵니다. 비어있으면 예외를 발생시킵니다.

     

     스택은 Stack 클래스로 구현하여 제공하고 있지만, 큐는 Queue 인터페이스로만 정의해 놓았을 뿐 별도의 클래스를 제공하고 있지 않습니다. 대신 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
    import java.util.LinkedList;
    import java.util.Queue;
    import java.util.Stack;
     
    public class StackAndQueue {
     
        public static void main(String[] args) {
     
            Stack<String> stack = new Stack<String>();
            stack.push("0");
            stack.push("1");
            stack.push("2");
     
            Queue<String> queue = new LinkedList<String>();
            queue.offer("0");
            queue.offer("1");
            queue.offer("2");
            
            /*queue.add("3");
            queue.add("4");
            queue.add("5");*/
     
            System.out.println("Stack ===== S");
            while (!stack.empty()) {
                System.out.println(stack.pop());
            }
            System.out.println("Stack ===== E");
     
            System.out.println("Queue ===== S");
            while (!queue.isEmpty()) {
                System.out.println(queue.poll());
            }
            System.out.println("Queue ===== E");        
        }
    }
    cs

    출처 : 자바의 정석

    반응형

    댓글

Designed by Tistory.