English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 흐름 제어

Java 배열

Java 방향 대상(I)

Java 방향 대상(II)

Java 방향 대상(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력출력(I/O)

Java Reader/Writer

Java 다른 주제

Java 프로그램이 데이터 구조 큐(Queue)를 구현

    Java 예제 전체

이 예제에서는 Java로 큐 데이터 구조를 구현하는 방법을 배웁니다.

이 예제를 이해하려면 먼저 다음 튜토리얼을 방문해야 합니다.

예제1:Java 스택 구현 프로그램

public class Queue {
  int SIZE = 5;
  int items[] = new int[SIZE];
  int front, rear;
  Queue() {
    front = -1;
    rear = -1;
  }
  //데이터열이 가득 찬지 확인
  boolean isFull() {
    if (front == 0 && rear == SIZE - 1) {
      return true;
    }
    return false;
  }
  //데이터열이 비어있는지 확인
  boolean isEmpty() {
    if (front == -1)
      return true;
    else
      return false;
  }
  //요소를 큐에 삽입합니다
  void enQueue(int element) {
    //데이터열이 가득 찬 경우
    if (isFull()) {
      System.out.println("Queue is full");
    }
    else {}}
      if (front == -1) {
        //front를 첫 번째 요소로 표시
        front = 0;
      }
      rear++;
      //뒤에 요소 추가
      items[rear] = element;
      System.out.println("Insert "); + element);
    }
  }
  //데이터열에서 요소를 제거
  int deQueue() {
    int element;
    //데이터열이 비어있을 경우
    if (isEmpty()) {
      System.out.println("Queue is empty");
      return (-1);
    }
    else {}}
      //큐 앞에서 요소를 제거합니다.
      element = items[front];
      //데이터열이 하나만 있는 경우
      if (front >= rear) {
        front = -1;
        rear = -1;
      }
      else {}}
        //다음 요소를 front로 표시
        front++;
      }
      System.out.println(element + "Deleted");
      return (element);
    }
  }
  //표시队列요소
  void display() {
    int i;
    if (isEmpty()) {
      System.out.println("Empty Queue");
    }
    else {}}
      //큐의 앞을 표시합니다
      System.out.println("\n앞쪽 인덱스-> " + front);
      //큐의 요소를 표시합니다
      System.out.println("아이템 -> ");
      for(i = front; i <= rear; i++)
        System.out.print(items[i] + "    ");
      // 큐의 뒤쪽을 표시합니다
      System.out.println("\n뒤쪽 인덱스-> " + rear);
    }
  }
  public static void main(String[] args) {
    //Queue 클래스의 객체를 생성합니다
    Queue q = new Queue();
    //큐에서 요소를 제거하려고 시도합니다
    // 현재 큐가 비어 있습니다
    // 따라서 제거할 수 없습니다
    q.deQueue();
    // 요소를 큐에 삽입합니다
    for(int i = 1; i < 6; i ++) {
      q.enQueue(i);
    }
    // 요소6개의 요소를 큐에 추가할 수 없습니다. 큐가 가득 찼습니다.
    q.enQueue(6);
    q.display();
    // deQueue는 첫 번째로 입력된 요소를 제거합니다. 예를 들어:1
    q.deQueue();
    //지금은 우리는4개의 요소
    q.display();
  }
}

출력 결과

큐가 비어 있습니다
삽입 1
삽입 2
삽입 3
삽입 4
삽입 5
큐가 가득 찼습니다
앞쪽 인덱스-> 0
아이템 ->
1  2  3  4  5  
뒤쪽 인덱스-> 4
1 삭제된
앞쪽 인덱스-> 1
아이템 ->
2  3  4  5
뒤쪽 인덱스-> 4

위의 예제에서 Java로 큐 데이터 구조를 구현했습니다.

예제2:Queue 인터페이스를 사용하여 스택 구현

Java는 큐를 구현할 수 있는 내장 인터페이스 Queue를 제공합니다.

import java.util.Queue;
import java.util.LinkedList;
class Main {
  public static void main(String[] args) {
    //LinkedList 클래스를 사용하여 큐를 생성합니다.
    Queue<Integer> numbers = new LinkedList<>();
    // enqueue
    //큐 마지막에 요소를 추가합니다.
    numbers.offer(1);
    numbers.offer(2);
    numbers.offer(3);
    System.out.println("Queue: " ); + numbers);
    // dequeue
    //큐 앞에서 요소를 제거합니다.
    int removedNumber = numbers.poll();
    System.out.println("삭제된 요소: " ); + removedNumber);
    System.out.println("삭제 후 대기队列: ") + numbers);
    }
}

출력 결과

Queue: [1, 2, 3]
삭제된 요소: 1
삭제 후 대기队列: [2, 3]

위의 예제에서 우리는 Java의 Queue 인터페이스를 사용하여 큐를 구현했습니다. 여기서는 Queue 인터페이스를 구현하는 LinkedList 클래스를 사용했습니다.

  • Numbers.offer() - 요소를 큐의 마지막에 삽입합니다

  • Numbers.poll() - 큐의 가장 앞에서 요소를 제거합니다

주의하십시오. 우리는 큐를 생성할 때 괄호 <Integer>를 사용했습니다. 이는 큐가 제너릭 타입임을 의미합니다. 제너릭에 대한更多信息를 알고 싶다면 다음을 방문하십시오:Java 제너릭.

우리는 다른 인터페이스와 클래스를 Queue와 LinkedList 대신 사용할 수 있습니다. 예를 들어:

Java 예제 전체