[Java] Stack & Queue

eeminsu·2021년 11월 16일
0
post-thumbnail

자바의 정석을 통해 공부한 내용을 요약하였습니다.

Stack

1. 특징

  • LIFO(Last In First Out)구조이다.
  • 순차적으로 데이터를 추가하고 삭제하기 때문에 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하다.


2. 메서드

  • boolean empty() - Stack이 비어있는지 알려줌
  • Object peek() - Stack의 맨 위에 저장된 객체를 반환
  • Object pop() - Stack의 맨 위에 저장된 객체를 꺼낸다.
  • Object push(Object item) - Stack에 객체를 저장한다.
Stack<Integer> st = new Stack<>();

st.push(1); // Stack에 1 추가
st.peek(); // 1 반환
st.pop(); // 1을 반환하면서 Stack에서 꺼냄
st.empty(); // 1을 반환(Stack이 비어있음)



Queue

1. 특징

  • FIFO(Frist In First Out)구조이다.
  • Queue는 항상 첫 번째 저장된 데이터를 삭제하므로 배열 기반의 클래스보다 데이터의 삭제/추가가 쉬운 LinkedList로 구현하는 것이 적합하다.
  • Queue는 인터페이스로만 정의되어 있어 직접 구현하거나 Queue인터페이스를 구현한 클래스들을 사용해야 한다. (ex. LinkedList, ArrayDeque 등등)
Queue q = new LinkedList(); // LinkedList 클래스를 사용하여 Queue클래스 선언



2. 메서드

  • boolean offer(Object o) - Queue에 객체를 저장, 실패하면 false를 반환
  • Object poll() - Queue에서 객체를 꺼내서 반환, 비어있으면 null을 반환
  • Object peek() - 삭제없이 요소를 읽어옴, 비어있으면 null을 반환
  • boolean add(Object o) - offer()와 동일하나 실패 시 예외 발생
  • Object remove() - poll()과 동일하나 실패 시 예외 발생
  • Object element() - peek()과 동일하나 실패 시 예외 발생
Queue q = new LinkedList();

q.offer("0"); // Queue에 1을 추가
q.peek(); // 1을 삭제없이 반환
q.poll(); // 1을 삭제



Stack과 Queue의 활용

1. Stack

수식계산, 수식괄호검사, 웹브라우저의 뒤로/앞으로 등등

2. Queue

최근 사용 문서, 인쇄작업 대기목록, 버퍼 등등

profile
안되면 될 때까지

0개의 댓글