Java中的PriorityBlockingQueue comparator()方法

Java中的PriorityBlockingQueue comparator()方法

PriorityBlockingQueue 类中的 comparator() 方法返回用于按指定顺序排序PriorityBlockingQueue中元素的比较器。如果队列遵循元素的自然排序模式,则该方法返回 null值

语法:

public Comparator<? super E> comparator()

返回值: 此方法返回用于按特定顺序排序集合元素的 比较器集合 。如果PriorityBlockingQueue遵循默认或自然排序模式,则它返回 null值 。下面的程序演示PriorityBlockingQueue的comparator()方法:

例如1: 演示包含整数列表的PriorityBlockingQueue上的comparator()方法。

// Java Program Demonstrate comparator()
// method of PriorityBlockingQueue
 
import java.util.concurrent.PriorityBlockingQueue;
import java.util.*;
 
public class GFG {
    public static void main(String[] args)
        throws InterruptedException
    {
 
        // create object of PriorityBlockingQueue
        PriorityBlockingQueue<Integer> PrioQueue
            = new PriorityBlockingQueue<Integer>();
 
        // Add numbers to PriorityBlockingQueue
        PrioQueue.put(45815616);
        PrioQueue.put(4981561);
        PrioQueue.put(4594591);
        PrioQueue.put(9459156);
 
        // get String representation of PriorityBlockingQueue
        String str = PrioQueue.toString();
 
        // Creating a comparator using comparator()
        Comparator comp = PrioQueue.comparator();
 
        // Displaying the comparator values
        System.out.println("Comparator value: " + comp);
 
        if (comp == null)
            System.out.println("PriorityBlockingQueue"
                               + "follows natural ordering");
        else
            System.out.println("PriorityBlockingQueue follows"
                               + comp);
    }
}

输出:

Comparator value: null
PriorityBlockingQueue遵循自然排序

例如2: 演示包含整数列表的PriorityBlockingQueue上的comparator()方法。

// Java程序演示PriorityBlockingQueue的comparator()方法
 
import java.util.concurrent.PriorityBlockingQueue;
import java.util.*;
 
// 比较字符串的比较器
class COMPARING implements Comparator<String> {
    public int compare(String str1, String str2)
    {
        return str2.compareTo(str1);
    }
}
 
public class GFG {
    public static void main(String[] args)
        throws InterruptedException
    {
 
        // 定义PriorityBlockingQueue的容量
        int capacityOfQueue = 5;
 
        // 创建PriorityBlockingQueue对象
        // 通过传递容量和比较器类作为参数。
        PriorityBlockingQueue<String> characters
            = new PriorityBlockingQueue<String>(capacityOfQueue,
                                                new COMPARING());
 
        // 添加字符串
        characters.add("Geeks");
        characters.add("forGeeks");
        characters.add("A computer portal");
 
        // 使用comparator()获取比较器
        Comparator comp = characters.comparator();
 
        // 显示比较器值
        System.out.println("Comparator value is: " + comp);
 
        if (comp == null)
            System.out.println("PriorityBlockingQueue"
                               + "follows natural ordering");
        else
            System.out.println("PriorityBlockingQueue follows: "
                               + comp);
        // 显示结果
        System.out.println("\n使用自定义比较器之后的元素");
        for (String e : characters)
            System.out.print(e + ", ");
    }
}

输出:

Comparator value is: COMPARING@28d93b30
PriorityBlockingQueue follows: COMPARING@28d93b30

使用自定义比较器之后的元素
forGeeks, Geeks, A computer portal,

参考: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html#comparator–

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程