Office 문서용 무료 .NET Java API 다운로드
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 프로그램에서 이를 사용하는 방법에 대해 배웠습니다.
'자바(Java)' 카테고리의 다른 글
숫자가 소수인지 아닌지 확인하는 Java 프로그램 (0) | 2024.09.21 |
---|---|
Java의 추상 클래스와 인터페이스의 차이점 (2) | 2024.02.05 |
Java의 스택 클래스 (1) | 2024.02.05 |
Java의 무작위 클래스 (0) | 2024.02.04 |
Java의 유형 캐스팅 (1) | 2024.02.04 |