Java 中的 PriorityQueue remove() 方法

Java 中的 PriorityQueue remove() 方法

PriorityQueue 类的 remove() 方法 在 java.util 包中使用, 用于从 PriorityQueue 中删除特定元素。 就像我们都知道,元素进入优先队列时并没有排序,但我们都知道从优先队列中取出元素时元素总是排序的,这是优先队列的一个特征。这里数据类型的元素的默认优先级顺序定义如下:

  • Integer :最小的元素排在第一位(仅处理正数时)
  • String :按字母顺序排列

注意: 创建该类的实例时,我们还可以插入 Comparator,告诉我们应该如何定义优先级。

语法:

PriorityQueue<String> = new PriorityQueue<String>(ComparatorHere);

语法: Remove 方法

Priority_Queue.remove(Object O)

参数: 参数 O 是 PriorityQueue 类型的参数,并指定要从 PriorityQueue 中删除的元素。

返回值: 如果指定的元素在队列中存在,则此方法返回 true,否则返回 false。

示例 1

// Java 程序演示 remove() 方法
// 在 PriorityQueue 中
// 其元素为 String 类型。
// 导入所有实用程序类
import java.util.*;
//主类 PriorityQueueDemo
public class GFG {
    // Main driver method
    public static void main(String args[])
    {
        // 创建一个空的 PriorityQueue,
        // 其中元素为字符串类型
        PriorityQueue<String> queue
            = new PriorityQueue<String>();
        // 使用 add() 方法将元素添加到队列中
        queue.add("Welcome");
        queue.add("To");
        queue.add("Geeks");
        queue.add("For");
        queue.add("Geeks");
        // 打印 PriorityQueue 的元素
        System.out.println("Initial PriorityQueue: "
                           + queue);
        // 使用 remove() 方法从 PriorityQueue 中删除元素
        queue.remove("Geeks");
        queue.remove("For");
        queue.remove("Welcome");
        // 显示移除元素后的 PriorityQueue
        System.out.println("PriorityQueue after removing "
                           + "elements: " + queue);
    }
}

输出

Initial PriorityQueue: [For, Geeks, To, Welcome, Geeks]
PriorityQueue after removing elements: [Geeks, To]

示例 2

// Java程序演示了PriorityQueue类的remove()方法
// 元素类型为整数
 
// 导入所需的类
import java.util.*;
 
// 主类
// PriorityQueueDemo
public class GFG {
 
    // 主驱动程序方法
    public static void main(String args[])
    {
 
        // 创建一个空的PriorityQueue对象
        // 创建一个整数类型的对象
        PriorityQueue<Integer> queue
            = new PriorityQueue<Integer>();
 
        // 使用add()方法添加指定元素
        queue.add(10);
        queue.add(15);
        queue.add(30);
        queue.add(20);
        queue.add(5);
 
        // 输出PriorityQueue
        System.out.println("初始PriorityQueue: "
                           + queue);
 
        // 使用remove()方法从PriorityQueue中删除元素
        queue.remove(30);
        queue.remove(5);
 
        // 输出删除元素后的PriorityQueue
        System.out.println("删除元素后的PriorityQueue: " + queue);
    }
}

输出:

初始PriorityQueue: [5, 10, 30, 20, 15]
删除元素后的PriorityQueue: [10, 20, 15]

极客们,你们是否曾想过,如果remove()方法的调用次数超过队列中的元素数量将会发生什么。在这种情况下,它将继续删除已经存在的元素,然后它将不会按优先顺序找到任何元素来删除,因此它将抛出一个如下所示的异常。

注意: 该类实现了抽象队列接口。

示例

// Java程序演示remove() 方法
// 在优先队列中
// 当有异常时
 
// 导入所需类
import java.io.*;
import java.util.PriorityQueue;
 
// 主类
// PriorityQueueException
class GFG {
 
    // 主驱动程序方法
    public static void main(String[] args)
    {
 
        // 创建一个空的PriorityQueue
        PriorityQueue<Integer> pq
            = new PriorityQueue<Integer>();
 
        // 注意:元素按未排序的顺序插入到
        // 优先队列,但在删除元素后
        // 队列总是有序的。
 
        // 使用add() 方法将元素添加到以上队列中
        pq.add(2);
        pq.add(14);
        pq.add(41);
        pq.add(7);
        pq.add(99);
 
        // 目前队列中的元素是未排序的
 
        // 使用size() 方法删除任何元素之前获得以上队列的大小
        System.out.println(
            "删除之前的优先队列大小:"
            + pq.size());
 
        // 打印以上队列中的所有元素
        System.out.println(
            "移除之前的优先队列:" + pq);
 
        // 在包含5个元素的优先队列中调用remove() 方法
 
        // 在此调用remove() 方法,例如2次
        // 因此,将删除2个最优先的元素
        System.out.println("已删除第1个元素:"
                           + pq.remove());
        System.out.println("已删除第2个元素:"
                           + pq.remove());
        System.out.println("已删除第3个元素:"
                           + pq.remove());
        System.out.println("已删除第4个元素:"
                           + pq.remove());
        System.out.println("已删除第5个元素:"
                           + pq.remove());
 
        // 到目前为止队列为空,如果现在我们继续进行remove() 调用,它将因此抛出异常
        System.out.println("已删除第6个元素:"
                           + pq.remove());
 
        // 我们知道整数越小,优先级越大
        // 这个类的默认比较器
 
        // 注意:优先级队列现在始终以排序的方式返回元素是此类的一个特征
 
        // 打印优先级元素删除后的队列
        System.out.println(
            "删除优先级元素后的优先队列如下:"
            + pq);
    }
}

输出:

Java 中的 PriorityQueue remove() 方法

输出解释:

它展示了队列中没有更多元素,因为队列现在为空,因此它引发NoSuchElementException。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程