[Java/자료구조] 스택(Stack)과 큐(Queue)

☑️ Stack

LIFO(Last In, First Out), 마지막에 삽입된 요소가 가장 먼저 제거되는 구조
- java.util 패키지에서 제공하는 Stack 클래스를 사용한다.

Stack의 선언 방법

Stack<자료형> stack = new Stack<>();

Method

메서드설명
push(E e)- 스택의 맨 위에 지정된 요소를 추가한다.
add(E e)- 스택의 맨 위에 지정된 요소를 추가한다.
- 성공 시 true를, 실패 시 false를 반환한다.
pop()- 스택의 맨 위에 요소를 제거하고 반환한다.
remove(index)- 원하는 index의 값을 삭제한다.
peek()- 스택의 맨 위에 요소를 제거하지 않고 반환한다.
clear()- 스택의 모든 요소를 삭제한다.
size()- 스택의 사이즈를 반환한다.
isEmpty()- 스택이 비어 있는 지 여부를 반환한다.

스택(Stack)을 이용한 예시

import java.util.Stack;

public class StackExample {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();

        stack.push(10);
        stack.push(20);
        stack.push(30);

        System.out.println("Stack: " + stack); // Stack: [10, 20, 30]
        System.out.println("Peek: " + stack.peek()); // Peek: 30
        System.out.println("Pop: " + stack.pop()); // Pop: 30
        System.out.println("Stack after pop: " + stack); // Stack after pop: [10, 20]
        System.out.println("Stack size: " + stack.size()); // Stack size: 2
        System.out.println("Is Stack empty? " + stack.isEmpty()); // Is Stack empty? false

        stack.clear();
        System.out.println("Stack after clear: " + stack); // Stack after clear: []
    }
}

☑️ Queue

FIFO(First In, First Out), 가장 먼저 삽입된 요소가 가장 먼저 제거되는 구조
- java.util 패키지에서 제공하는 Queue 인터페이스를 사용한다.

Queue의 선언 방법

Queue<자료형> queue = new LinkedList<>();

Method

메서드설명
offer(E e)- 큐의 맨 뒤에 지정된 요소를 추가한다.
- 실패 시 false를 반환한다.
add(E e)- 큐의 맨 뒤에 지정된 요소를 추가한다.
- 실패 시 IllegalStateException이 발생한다.
poll()- 큐의 맨 앞에서 요소를 제거하고 반환한다.
- 큐가 비어있으면 null을 반환한다.
remove()- 큐의 맨 앞에서 요소를 삭제하고 반환한다.
- 큐가 비어있으면 Exception이 발생한다.
peek()- 큐의 맨 앞에서 요소를 반환한다.
- 큐가 비어있으면 null을 반환한다.
clear()- 큐의 모든 요소를 삭제한다.
size()- 큐의 사이즈를 반환한다.
contains(E e)- 큐에 해당 원소가 존재한다면 true, 존재하지 않는다면 false를 반환한다.
isEmpty()- 큐가 비어 있는 지 여부를 반환한다.

큐(Queue)를 이용한 예시

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();

        queue.offer("Apple");
        queue.offer("Banana");
        queue.offer("Cherry");

        System.out.println("Queue: " + queue); // Queue: [Apple, Banana, Cherry]
        System.out.println("Peek: " + queue.peek()); // Peek: Apple
        System.out.println("Poll: " + queue.poll()); // Poll: Apple
        System.out.println("Queue after poll: " + queue); // Queue after poll: [Banana, Cherry]
        System.out.println("Queue size: " + queue.size()); // Queue size: 2
        System.out.println("Is Queue empty? " + queue.isEmpty()); // Is Queue empty? false
        
        queue.clear();
        System.out.println("Queue after clear: " + queue); // Queue after clear: []
    }
}


© 2021. All rights reserved.

yaejinkong의 블로그