Java PriorityQueue comparator() 方法



描述

Java PriorityQueue comparator() 方法返回用於對該佇列中的元素進行排序的比較器。

宣告

以下是 java.util.PriorityQueue.comparator() 方法的宣告。

public Comparator<? super E> comparator()

引數

返回值

  • 方法呼叫返回用於對該佇列進行排序的比較器,如果該佇列是根據其元素的自然順序排序的,則返回 null。

異常

在 PriorityQueue 整數示例中使用自定義比較器

以下示例演示瞭如何使用 Java PriorityQueue comparator() 方法獲取相關的比較器。我們使用 add() 方法為 PriorityQueue 物件新增幾個整數,然後列印每個元素以顯示新增的元素和使用的比較器。

package com.tutorialspoint;

import java.util.Comparator;
import java.util.PriorityQueue;

public class PriorityQueueDemo {
   public static void main(String[] args) {
      
      // create an empty priority queue with an initial capacity
      PriorityQueue<Integer> queue = new PriorityQueue<>(5, new IntComparator());

      // use add() method to add elements in the queue
      queue.add(20);
      queue.add(30);
      queue.add(20);
      queue.add(30);
      queue.add(15);
      queue.add(22);
      queue.add(11);

      // let us print all the elements available in queue
      for (Integer number : queue) {
         System.out.println("Number = " + number);
      }
      
      System.out.println("Comparator = " + queue.comparator());
   }
}

class IntComparator implements Comparator<Integer>{

   @Override
   public int compare(Integer o1, Integer o2) {
      return o1 - o2;
   }	
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Number = 11
Number = 20
Number = 15
Number = 30
Number = 30
Number = 22
Number = 20
Comparator = com.tutorialspoint.IntComparator@5315b42e

在 PriorityQueue 字串示例中使用自定義比較器

以下示例演示瞭如何使用 Java PriorityQueue comparator() 方法獲取相關的比較器。我們使用 add() 方法為 PriorityQueue 物件新增幾個字串,然後列印每個元素以顯示新增的元素和使用的比較器。

package com.tutorialspoint;

import java.util.Comparator;
import java.util.PriorityQueue;

public class PriorityQueueDemo {
   public static void main(String[] args) {
      
      // create an empty priority queue
      PriorityQueue<String> queue = new PriorityQueue<>(new StringComparator());

      // use add() method to add elements in the queue
      queue.add("Welcome");
      queue.add("To");
      queue.add("Tutorialspoint");
      System.out.println("PriorityQueue = " + queue);   
      
      System.out.println("Comparator = " + queue.comparator());
   }
}
class StringComparator implements Comparator<String>{
   @Override
   public int compare(String o1, String o2) {
      return o1.compareTo(o2);
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

PriorityQueue = [To, Welcome, Tutorialspoint]
Comparator = com.tutorialspoint.StringComparator@5315b42e

在 PriorityQueue 物件示例中使用自定義比較器

以下示例演示瞭如何使用 Java PriorityQueue comparator() 方法獲取相關的比較器。我們使用 add() 方法為 PriorityQueue 物件新增幾個 Student 物件,然後列印每個元素以顯示新增的元素和使用的比較器。

package com.tutorialspoint;

import java.util.Comparator;
import java.util.PriorityQueue;

public class PriorityQueueDemo {
   public static void main(String[] args) {

      // create an empty priority queue
      PriorityQueue<Student> queue = new PriorityQueue<>(new RollNoComparator());

      // use add() method to add elements in the queue
      queue.add(new Student(1, "Julie"));
      queue.add(new Student(2, "Robert"));
      queue.add(new Student(3, "Adam"));
      System.out.println("PriorityQueue = " + queue);   
      
      System.out.println("Comparator = " + queue.comparator());
   }
}

class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
   
   @Override
   public boolean equals(Object obj) {
      Student s = (Student)obj;
      return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
   }
}

class RollNoComparator implements Comparator<Student>{

   @Override
   public int compare(Student o1, Student o2) {
      return o1.rollNo - o2.rollNo;
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

PriorityQueue = [[ 1, Julie ], [ 2, Robert ], [ 3, Adam ]]
Comparator = com.tutorialspoint.RollNoComparator@2ef9b8bc
java_util_priorityqueue.htm
廣告