본문 바로가기
자바(Java)

Java의 대기열 인터페이스

by 코딩하는 욤욤이 2024. 2. 5.
반응형

Office 문서용 무료 .NET Java API 다운로드

 

Free .NET/JAVA Word, Excel, PDF, PowerPoint,Barcode Libraries

A free PDF Viewer library for developers to display, convert and print PDF documents on Windows Forms applications. Learn More Tutorials A free Word Viewer library for developers to display, convert and print Word documents on Windows Forms applications. L

www.e-iceblue.com

java.util.queue는 Java의 인터페이스이며 java.util.Collection에서 확장됩니다.

 

이 글에서는 Java 프로그래밍 언어에서 제공하는 Queue 인터페이스, Queue의 방법 및 Queue의 종류에 대해 알아보겠습니다.

자바의 큐 인터페이스


Queue는 FIFO(First In, First Out) 추상 데이터 형식(ADT)입니다.

 

즉, 요소가 삽입된 순서대로 요소가 제거됩니다.

 

java.util.queue는 Java의 인터페이스이며 java.util.Collection에서 확장됩니다.

 

일반적으로 사용되는 Queue 구현 클래스에는 LinkedList, ArrayDeque 및 PriorityQueue가 있습니다.

Queue 컬렉션은 처리될 요소를 보관하는 데 사용되며 삽입, 제거 등 다양한 작업을 제공합니다.

 

목록 끝에 요소를 삽입하고 목록 시작 부분에서 요소를 삭제하는 데 사용이 제한된 객체의 순서 목록입니다.

 

즉, FIFO 또는 First-In-First-Out 원칙을 따릅니다.

 

인터페이스로서 선언을 위해 Queue에는 구체적인 클래스가 필요하며 가장 일반적인 클래스는 Java에서 PriorityQue와 LinkedList입니다.

 

두 구현 모두 스레드 안전하지는 않습니다.

대기열에서 첫 번째 요소는 RAR(꼬리라고도 함)이라고 불리는 한쪽 끝에서 삽입됩니다.

큐에서 기존 요소의 제거는 FRONT(헤드라고도 함)라고 불리는 다른 끝에서 이루어집니다.

Java의 Queue 인터페이스에서의 작업Java에서는 insertion Enqueue와 delete Dequeue의 두 가지 작업이 큐 인터페이스에 의해 수행됩니다.

엔큐대기열은 시작 부분에 요소를 추가합니다.

 

대기열이 가득 차면 오버플로입니다.

대기열은 대기열에서 다음과 같은 작업을 수행합니다:

대기열이 꽉 찼는지 확인합니다.


대기열이 가득 찬 경우 "대기열 오버플로"를 인쇄합니다.


그 외에는 REAR를 1씩 증가시킵니다.


4) QUE[RAR] = ELECTOR를 할당합니다.


디큐
대기열은 대기열의 끝에 있는 요소를 삭제합니다. 대기열이 비어 있으면 언더플로우됩니다.

대기열에서 다음 작업을 수행합니다.

 

예를 들어, 대기열에서 다음 작업을 수행합니다:

대기열이 비어 있는지 확인합니다.


대기열이 가득 찬 경우 "대기열 "언더플로우"를 인쇄합니다.


큐 맨 앞에 있는 요소를 임시 변수인 TEMP= QUE[FRONT]에 복사합니다.


전방을 1씩 증가시킵니다.


템프를 인쇄한 후 삭제합니다.


대기열의 요소들이 순차적으로 배열되어 있기 때문에 대기열은 선형 데이터 구조라고 합니다.

 

예를 들어, 가게에 손님들이 줄을 선다.

 

그래서 가게에 제일 먼저 올 손님이 제일 먼저 서비스를 받을 사람이 될 것입니다.

자바의 큐 인터페이스 예제의 전체 프로그램은 다음과 같습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample1 {
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        q.add(6);
        q.add(1);
        q.add(8);
        q.add(4);
        q.add(7);
        System.out.println("The queue is: " + q);
    }
}
 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

자바에서의 큐 인터페이스 방법
java.lang.Math 클래스에는 로그, 세제곱근, 삼각함수 등 기본적인 숫자 연산을 수행하기 위한 다양한 방법이 포함되어 있습니다.

 

다양한 Java 산술 방법은 다음과 같습니다:

1) Java에서 queue.add() 메서드
이 메서드는 Queue의 끝에 지정된 요소를 추가합니다.

 

요소가 성공적으로 추가되면 true를 반환하고 요소가 추가되지 않으면 false를 반환합니다.

 

Queue가 최대 용량이므로 더 이상 요소를 가져올 수 없을 때 발생합니다.

queue.add() 메서드 예제의 전체 프로그램은 다음과 같습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample
{
  public static void main(String[] args)
  {
    Queue<Integer> q = new LinkedList<>();

    // Adds elements {0, 1, 2, 3, 4} to queue
    for (int i=0; i<5; i++)
     q.add(i);

    // Display contents of the queue.
    System.out.println("Elements of queue-"+q);
  }
}

 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

 

 

2) Java에서 queue.offer() 메서드
Queue Interface의 queue.offer() 메서드는 용량 제한을 위반하지 않고 즉시 지정된 요소를 이 큐에 삽입합니다.

 

이 메서드는 스택에 추가해야 하는 요소인 e 매개 변수를 사용합니다.

 

요소가 삽입되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

queue.offer() 메서드 예제의 전체 프로그램은 다음과 같습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample3 {
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();

        // Adds elements {0, 1, 2, 3, 4} to queue
        for (int i = 0; i < 5; i++)
            q.add(i);
        System.out.println("Elements of queue-" + q);
        if (q.offer(10)) {
            System.out.println("if the queue is not full 10 is added into the queue");
            System.out.println("Elements of queue-" + q);
        } else System.out.println("Queue is full");
    }
}

 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

 

3) Java에서 queue.peek() 메서드
queue.peek() 메서드는 큐의 맨 앞에 있는 요소를 반환합니다.

 

큐가 비어 있으면 null을 반환합니다. 요소는 큐에서 제거되지 않습니다.

queue.peek() 메서드 예제의 전체 프로그램은 다음과 같습니다.

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

public class QueueExample4 {
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        // Adds elements {0, 1, 2, 3, 4} to queue
        for (int i = 0; i < 5; i++)
            q.add(i);
        System.out.println("Elements of queue-" + q);
        System.out.println("The head of the queue is : " + q.peek());
    }
}
 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

대기열이 비어 있는 경우 queue.peek() 메서드의 결과를 표시하는 또 다른 예입니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample5 {
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        System.out.println("The head of the queue is : " + q.peek());
    }
}
 

 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

4) Java의 queue.poll() 메소드

queue.poll() 메서드는 이 대기열의 헤드를 검색 및 제거하거나 이 대기열이 비어 있으면 null을 반환합니다. 

 

queue.poll() 메서드 예제의 전체 프로그램은 다음과 같습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample6 {
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        q.add(6);
        q.add(1);
        q.add(8);
        q.add(4);
        q.add(7);
        System.out.println("The queue is: " + q);
        System.out.println("The head of the queue is : " + q.poll());
    }
}
 

 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

5) Java의 queue.size() 메소드 

queue.size() 메서드는 Set의 요소 수를 가져오는 데 사용됩니다. 

 

queue.size() 메서드 예제의 전체 프로그램은 다음과 같습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample7 {
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        q.add(6);
        q.add(1);
        q.add(8);
        q.add(4);
        q.add(7);
        System.out.println("The queue is: " + q);
        System.out.println("The head of the queue is : " + q.size());
    }
}
 
 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

6) Java의 queue.isEmpty() 메소드

queue.empty() 메소드는 큐가 비어 있는지 확인하는 데 사용됩니다. 

 

대기열이 비어 있으면 true를 반환합니다. 

 

그렇지 않으면 거짓입니다. 

 

queue.empty() 메소드 예제의 전체 프로그램은 다음과 같습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample8{
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        q.add(6);
        q.add(1);
        q.add(8);
        q.add(4);
        q.add(7);
        System.out.println("The queue is: " + q);
        System.out.println("The queue id empty ? " + q.isEmpty());
    }
}
 

 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

7) 대기열의 queue.contains() 메소드

queue.contains()는 이 세트에 지정된 요소가 포함되어 있으면 true를 반환합니다. 

 

대기열에서 검색해야 하는 지정된 요소로 인수를 사용합니다. 

 

queue.contains() 메서드 예제의 전체 프로그램은 아래에 나열되어 있습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample9{
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        q.add(6);
        q.add(1);
        q.add(8);
        q.add(4);
        q.add(7);
        System.out.println("The queue is: " + q);
        if(q.contains(12)){
            System.out.println("The queue has element 12 ");

        } else
        System.out.println("The queue does not have 12 ? ");
    }
}
 

 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

8) 대기열의 queue.remove() 메소드

queue.remove() 메서드는 이 대기열의 헤드를 검색하고 제거합니다. 

 

queue.remove() 메서드 예제의 전체 프로그램은 다음과 같습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample11{
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        q.add(6);
        q.add(1);
        q.add(8);
        q.add(4);
        q.add(7);
        System.out.println("The queue is: " + q);
        System.out.println("removed element from the queue is : " +q.remove());
    }
}
 

 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

9) 대기열의 queue.removeAll() 메소드

queue.removeAll() 메서드는 지정된 컬렉션에 포함된 모든 요소를 ​​이 집합에서 제거합니다(선택적 작업). 

 

컬렉션을 인수로 사용하고 요소가 제거되면 true를 반환하고 그렇지 않으면 false를 반환합니다.

 

ueue.removeAll() 메서드 예제의 전체 프로그램은 아래에 나열되어 있습니다.

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample12{
    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        q.add(6);
        q.add(1);
        q.add(8);
        q.add(4);
        q.add(7);
        System.out.println("The queue is: " + q);
        System.out.println("All elements from the queue is removed : "+ q.removeAll(q));
    }
}
 

 

위의 프로그램은 다음과 같은 출력을 발생시킵니다.

 

이 포스팅

에서는 Java 프로그래밍 언어의 Queue 인터페이스와 해당 메소드 및 Java 프로그램에서 이를 사용하는 방법에 대해 배웠습니다.

반응형