Java에서 우선 순위 대기열을 구현하는 방법?



이 기사에서는 데모와 함께 Java의 Priority Queue라는 프로그래밍 도메인의 또 다른 흥미로운 주제를 소개합니다.

우선 순위 자바의 대기열 우선 순위에 따라 객체를 처리해야 할 때 사용됩니다. 이 기사는이 개념을 자세히 살펴 보는 데 도움이 될 것입니다. 이 기사에서는 다음 사항을 다룰 것입니다.

그럼 시작하겠습니다.





Java의 우선 순위 대기열

이미 언급했듯이 PriorityQueue는 우선 순위에 따라 객체를 처리해야 할 때 사용됩니다. 대기열은 선입 선출 알고리즘을 따르는 것으로 알려져 있지만 대기열의 요소가 우선 순위에 따라 처리되어야하는 경우가 있습니다. 이때 PriorityQueue가 작동합니다. PriorityQueue는 우선 순위 힙을 기반으로합니다. Priority Queue의 요소는 사용되는 생성자에 따라 자연스러운 순서 또는 대기열 생성시 제공되는 Comparator에 따라 정렬됩니다. Priority Queue의 몇 가지 중요한 사항은 다음과 같습니다.

  • PriorityQueue는 NULL 포인터를 허용하지 않습니다.
  • 비교할 수없는 객체의 PriorityQueue를 만들 수 없습니다.
  • PriorityQueue는 바인딩되지 않은 대기열입니다.
  • 이 큐의 헤드는 지정된 순서와 관련하여 최소 요소입니다. 여러 요소가 최소한의 가치를 위해 묶인 경우 헤드는 이러한 요소 중 하나가됩니다. 연결은 임의로 끊어집니다.
  • 큐 검색 작업은 큐의 헤드에있는 요소를 폴링, 제거, 엿보기 및 요소에 액세스합니다.
  • AbstractQueue, AbstractCollection, Collection 및 Object 클래스에서 메서드를 상속합니다.

Java의 Priority Queue에 대한이 기사로 이동



큐 인터페이스 선언

공용 인터페이스 큐 확장 컬렉션

Java의 Priority Queue에 대한이 기사로 이동

Java 대기열 인터페이스의 방법

방법 기술

부울 add (객체)



지정된 요소를이 큐에 삽입하고 성공하면 true를 반환하는 데 사용됩니다.

부울 제공 (객체)

이 큐에 지정된 요소를 삽입하는 데 사용됩니다.

개체 remove ()

자바 프로그램의 기본 구조

이 큐의 헤드를 검색하고 제거하는 데 사용됩니다.

개체 poll ()

이 큐의 헤드를 검색하고 제거하는 데 사용되며이 큐가 비어 있으면 null을 반환합니다.

개체 요소 ()

이 큐의 헤드를 검색하는 데 사용되지만 제거하지는 않습니다.

객체 peek ()

이 큐의 헤드를 검색하는 데 사용되지만 제거하지는 않습니다.이 큐가 비어 있으면 null을 반환합니다.

Java의 Priority Queue에 대한이 기사로 이동

com.journaldev.collections 패키지

import java.util.Comparator import java.util.PriorityQueue import java.util.Queue import java.util.Random public class PriorityQueueExample {public static void main (String [] args) {// 우선 순위 큐의 자연스러운 순서 예 Queue integerPriorityQueue = new PriorityQueue (7) 랜덤 rand = new Random () for (int i = 0i<7i++){ integerPriorityQueue.add(new Integer(rand.nextInt(100))) } for(int i=0i<7i++){ Integer in = integerPriorityQueue.poll() System.out.println('Processing Integer:'+in) } //PriorityQueue example with Comparator Queue customerPriorityQueue = new PriorityQueue(7, idComparator) addDataToQueue(customerPriorityQueue) pollDataFromQueue(customerPriorityQueue) } //Comparator anonymous class implementation public static Comparator idComparator = new Comparator(){ @Override public int compare(Customer c1, Customer c2) { return (int) (c1.getId() - c2.getId()) } } //utility method to add random data to Queue private static void addDataToQueue(Queue customerPriorityQueue) { Random rand = new Random() for(int i=0 i<7 i++){ int id = rand.nextInt(100) customerPriorityQueue.add(new Customer(id, 'Pankaj '+id)) } } //utility method to poll data from queue private static void pollDataFromQueue(Queue customerPriorityQueue) { while(true){ Customer cust = customerPriorityQueue.poll() if(cust == null) break System.out.println('Processing Customer with ID='+cust.getId()) } } } 

산출:

Java- Edureka의 출력 우선 순위 대기열

따라서 우리는 '자바의 우선 순위 대기열'에 대한이 기사를 마쳤습니다. 자세한 내용은 다음을 확인하십시오. 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 제공합니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.