자바 자료 구조 : 큐 - Queue

2022. 6. 27. 22:43Java/Java

728x90
반응형

Queue

기본적인 자료 구조로 먼저 넣은 데이터가 먼저 나오는 First in First out 구조로 나타낸다.

먼저 넣은 데이터가 나중에 나오는 Stack과는 반대되는 구조이다.

 

큐는 주로 운영체제의 프로세스 스케줄링 방식을 구현하기 위해 많이 사용된다.

 

https://ko.wikipedia.org/wiki/%EC%84%A0%EC%9E%85_%EC%84%A0%EC%B6%9C

자바에서는 기본적으로 Queue 클래스를 제공해준다.

add와 offer 메소드를 사용하여 데이터를 추가하고, poll이나 remove 메소드를 사용하여 데이터를 꺼낸다.

하지만 자바에서는 Queue 클래스를 단일로 사용하지는 못 하고 LinkedList와 같이 사용해야 한다.

 

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

// 선언
Queue<Integer> intQueue = new LinkedList<Integer>();
QUeue<String> strQueue = new LinkedList<String>();

intQueue.add(1);
intQueue.offer(2);

System.out.print(intQueue);
--> [1, 2]

strQueue.add("a");
strQueue.offer("b");

System.out.print(strQueue);
--> ["a", "b"]

// 첫 번째 값 반환 후 큐에서 제거
strQueue.poll();
--> a
System.out.print(strQueue);
--> ["b"]

// 첫 번째 값 반환 후 큐에서 제거
strQueue.remove();
--> b
System.out.print(strQueue);
--> []

 

ArrayList를 이용한 Queue 코드 작성

import java.util.ArrayList;

public class queue<T> {

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

  public void enqueue(T data) {
    queue.add(data);
  }

  public T dequeue() {
    if (queue.isEmpty()) {
      return null;
    }
    return queue.remove(0);
  }

  public boolean isEmpty() {
    return queue.isEmpty();
  }

  public static void main(String[] args) {
    queue<Integer> q = new queue<Integer>();
    q.enqueue(1);
    q.enqueue(2);
    q.enqueue(3);
    System.out.println(q.dequeue());
    System.out.println(q.dequeue());
    System.out.println(q.dequeue());
  }

}

 

728x90
반응형