본문 바로가기

자바 자료구조 알고리즘

자바의 스택과 큐

사용 이유

스택과 큐의 필요성 자료를 최대한 움직이지 않고, 그 안에 요소들을 저장하고 출력하기 위함이다. 값을 변경할 때마다, 그 안에 요소들이 많은 변화가 일어나면, 많은 컴퓨터 자원을 사용하여, 과부하 가능성이 있다. 보다 빠른 데이터 처리를 위해 스택과 큐를 이용한다.

스택

쌓이고 위에서 빼는 구조.

Last In First Out

  • push

Stack에 객체를 저장한다.

  • pop

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

  • peek

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

  • empty

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

  • search

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

public static void main(String[] args) {

        Stack<String> stack = new Stack<>();
        stack.push("가");
        stack.push("나");
        stack.push("다");
        while (!stack.isEmpty()) {
            System.out.println("stack.pop() = "+stack.pop());
        }
    }
stack.pop() = 다
stack.pop() = 나
stack.pop() = 가

대기 줄이 쌓이고, 오래 기다린 자료가 먼저 나감

First In Frist Out

  • add

Queue에 객체를 저장한다.

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

  • peek

삭제 없이 읽어온다. Queue가 비었을 때 null을 반환한다.

  • element

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

  • offer

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

  • poll

Queue에서 꺼내온다. 비어있으면 null을 반환한다.

  • remove

Queue에서 꺼내온다. 비어있으면 예외를 발생한다.

public static void main(String[] args) {
        
        Queue<String> queue = new LinkedList<>();
        queue.add("가");
        queue.add("나");
        queue.add("다");
        while (!queue.isEmpty()) {
            System.out.println("queue.poll() = " + queue.poll());
        }
    }

참고 자료

https://pridiot.tistory.com/68

https://tychejin.tistory.com/158

'자바 자료구조 알고리즘' 카테고리의 다른 글

자바 해시 테이블 자료구조  (0) 2023.01.15
행렬의 덧셈과 뺄셈 곱셈  (0) 2023.01.07