Java의 대기열에 넣고 빼기
Java에서 enqueue
와 dequeue
의 개념에 들어가기 전에 Queue의 전체 개념에 대한 기본 이해를 구축해 보겠습니다. 그것은 실제로 무엇입니까? 실제 사례 및 훨씬 더. 뛰어들어봅시다.
대기 줄
프로그래밍 측면에서 대기열은 이 데이터 유형이 수행하는 단방향 순서를 갖는 선형 구조입니다. 단방향 주문은 FIFO(선입 선출)입니다. 실제 예는 은행 밖에서 볼 수 있는 사람들의 줄(대기열)입니다. 먼저 들어온 사람이 먼저 대접받고 나갑니다. 따라서 프로그래밍에서 enqueue
와 dequeue
라고 하면 각각 항목을 추가하고 제거하는 것을 의미합니다. 아래 사진을 한번 보시죠.
보시다시피 대기열의 추가(인큐)는 항상 뒤쪽에서 수행되고 제거(디큐)는 항상 앞쪽에서 수행됩니다. 이제 큐에 대해 확실히 이해했으므로 Java로 큐를 구현하는 방법을 살펴보겠습니다.
Java의 큐
Java에서 큐는 연결 목록에 의해 구현되는 인터페이스로 간주됩니다. 다음 코드 예제는 Java에서 큐의 객체를 생성하는 방법을 보여줍니다.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
}
}
Java에서 구현하려면 연결 목록 및 대기열의 클래스를 추가해야 합니다. (코드 상단 참조). 큐를 구현하는 동안 우리는 이를 위해 Linked List를 사용합니다. 이제 대기열에서 항목을 추가 및 제거하는 것과 관련된 방법을 이해하겠습니다.
Java의 대기열에 넣고 빼기
위에서 언급했듯이 이러한 유형의 작업 순서는 FIFO입니다. 그래서, 우리가 만든 큐에 어떤 값을 추가(enqueue
)해 봅시다. 대기열이 문자열이므로 다음 값으로 충분합니다.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
// Adding In Queue using `add()` method
queue.add("Bill Gates"); // enque
queue.add("Mark Mark Zuckerberg"); // enque
queue.add("Elon Musk"); // enquue
queue.add("Jeff Bezos");
queue.offer("Donald Trump"); // alternatice enque
System.out.println("Queue : " + queue); // queue print
}
}
위의 예에서는 다음 두 가지 방법을 사용하여 네 개의 값을 추가했습니다.
queue.add()
코드에서 볼 수 있듯이 대기열에 4개의 문자열 값을 추가했습니다. 이 메서드에 대해 알아야 할 또 다른 사항은 확인되지 않은 예외가 발생한다는 것입니다. 예를 들어 대기열이 제한된 경우 add()
메서드는 공간이 없는 동안 다른 요소를 추가할 때 예외를 반환합니다. 그것은 모두 대기열의 특성에 달려 있습니다. Java여기의 대기열에 대해 자세히 알아보세요.
queue.offer()
offer()
메소드는 add()
의 대안입니다. 이 특정 메서드는 예외를 throw하지 않습니다. 대신 true 및 false 값을 제공합니다. 위의 예에서 offer()
를 사용하여 대기열에 다섯 번째 요소를 추가했습니다. 위 프로그램의 출력은 다음과 같을 것이다.
Queue : [ Bill Gates, Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump ]
이제 큐에 요소를 추가(대기열에 넣기
)하는 방법을 이해했습니다. 대기열에서 항목을 제거하는 방법을 살펴보겠습니다.
queue.remove()
remove()
메소드는 큐에서 요소를 삭제하는 데 사용됩니다. 대기열 맨 앞자리에서 운영됩니다. 예를 들어 위의 대기열에서 요소를 제거하는 경우 제거되는 첫 번째 요소는 Bill Gates
입니다. 다음 코드를 살펴보십시오.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
// Adding In Queue using `add()` method
queue.add("Bill Gates"); // enque
queue.add("Mark Mark Zuckerberg"); // enque
queue.add("Elon Musk"); // enquue
queue.add("Jeff Bezos");
queue.offer("Donald Trump"); // alternatice enque
System.out.println("Queue : " + queue); // queue print
String name = queue.remove(); // Dequeue
System.out.println("Removed from queue : " + name);
System.out.println(queue);
name = queue.poll(); // altrenative deque method
System.out.println("Removed from queue : " + name);
System.out.println(queue);
}
}
위의 코드 예제에서 볼 수 있듯이 대기열에서 항목을 삭제하기 위해 remove()
메서드를 사용했습니다. 빈 큐에서 요소를 삭제하려고 하면 확인되지 않은 예외가 발생합니다.
queue.poll()
remove()
의 다른 방법은 빈 대기열에서 요소를 삭제할 때 NULL
값을 반환하는 poll()
입니다. 위 코드의 출력을 살펴보십시오.
Queue : [Bill Gates, Mark Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump]
Removed from queue : Bill Gates
[Mark Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump]
Removed from queue : Mark Mark Zuckerberg
[Elon Musk, Jeff Bezos, Donald Trump]
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn