케네스로그

[자료구조/Java] Queue (Java구현, 관련 메소드) 본문

Dev/자료구조

[자료구조/Java] Queue (Java구현, 관련 메소드)

kenasdev 2021. 12. 28. 10:04
반응형

Queue 큐

Queue(큐)는 순서를 따르는 자료구조를 말합니다.
이 자료구조에서는 (front)과 (back)가 존재하며, 먼저 들어온 데이터가 먼저 빠져 나가는 선입선출(First-in-First-out)의 규칙을 따릅니다.

은행에서 사람들이 줄을 서서 대기하다가 먼저 온 순서대로 업무를 보는 것과 같습니다. 먼저 온 사람이 먼저 서비스를 받는 것(FIFO)이죠.

 

자바 메소드

Queue는 인터페이스이며, 이를 구현한 클래스는 LinkedListd입니다. 따라서, Queue를 사용하기 위해 LinkedList 객체를 Queue인터페이스 타입으로 변환합니다.

Queue<E> queue = new LinkedList<E>();
Queue<String> q_str = new LinkedList<String>();
q_str.offer("H"); // enqueue
q_str.add("O");
q_str.add("L");
q_str.add("A");

q_str.peek(); // get most front element
q_str.poll(); // dequeue
q_str.remove("L");
메소드 리턴 타입 설명
offer(E e) boolean 주어진 객체 삽입(enqueue).
성공 시 true, 실패 시 false 반환.
add(E e) boolean
Exception
주어진 객체 삽입(enqueue).
성공 시 true, 실패 시 Exception.
peek() E
null
head에 위치한 객체 리턴.
큐가 비었다면 null 반환
element() E
Exception
큐의 head 리턴.
큐가 비었다면 Exception
poll() E
Exception
front에 위치한 객체 리턴 후 제거(dequeue).
큐가 비었다면 null 반환
remove(E e) E
null
특정 객체 E 제거
큐가 비었다면 null

 

Queue 구현

public class MyStack<T> {

  private ArrayList<T> queue = new ArrayList<>();

  public boolean enqueue(T item) {

    this.queue.add(item);
      return true;

  }

  public T dequeue() {
    if(this.queue.isEmpty()) {
      return null;
        } else {
          return this.queue.remove(this.queue.size()-1);
        }
     }
  }
구현 코드는 개인 깃허브(이곳)에서 확인할 수 있습니다.

 

반응형