Java 如何修改PriorityQueue的元素

Java 如何修改PriorityQueue的元素

通常,队列采用先进先出(FIFO)的方式,但PriorityQueue采用基于优先级的方式访问元素。队列的每个元素都有一个与之关联的优先级。元素根据自然排序顺序进行排序。但是,我们可以使用比较器来提供自定义排序。PriorityQueue的元素实际上并不排序,它们只是以排序的顺序获取。这个特性使我们能够轻松地修改PriorityQueue的元素。

Java程序修改PriorityQueue的元素

在进入程序之前,让我们熟悉PriorityQueue的一些内置方法:

  • add() - 用于向队列中添加单个元素

  • offer() - 也可以将给定的元素插入到队列中

  • peek() - 用于检索队列的第一个元素

  • remove() - 用于从队列中删除指定的元素

方法1

  • 定义一个PriorityQueue集合的对象,并使用’add()’方法存储一些元素。

  • 现在,使用’peek()’方法显示队列的第一个元素,然后使用’remove()’方法将该元素从队列中移除。

  • 进一步移动,使用内置的’offer()’方法在相同的位置插入一个新的元素。

  • 再次显示修改后的第一个元素。

示例

在下面的示例中,我们将修改PriorityQueue的元素。这些元素将根据自然排序顺序进行排序,这意味着它们将以升序访问。

import java.util.*;
public class Modify {
  public static void main(String[] args) {
      PriorityQueue<Integer> queuePq = new PriorityQueue<>();

      // inserting elements
      queuePq.add(7);
      queuePq.add(9);
      queuePq.add(2);
      queuePq.add(4);
      queuePq.add(3);

      System.out.println("Original Queue: " + queuePq);
      int head1 = queuePq.peek(); // accessing first element

      System.out.println("The first element in Queue: " + head1);
      queuePq.remove(2); // removing first element
      queuePq.offer(1); // adding new element at first position
      int head2 = queuePq.peek(); // accessing first element

      System.out.println("The updated first element in Queue: " + head2);
      queuePq.offer(2); // adding new element at first position
      System.out.println("Newly updated Queue: " + queuePq);
   }
}

输出

Original Queue: [2, 3, 7, 9, 4]
The first element in Queue: 2
The updated first element in Queue: 1
Newly updated Queue: [1, 3, 2, 9, 4, 7]

方法2

  • 使用内置方法“Collections.reverseOrder()”定义一个PriorityQueue集合对象,以降序存储元素。

  • 现在,按照前面的示例描述的步骤进行操作。

示例

在以下示例中,我们将修改PriorityQueue的一个元素。使用比较器对元素进行优先级排序,以提供降序访问。

import java.util.*;
public class Modify {
   public static void main(String[] args) {
      PriorityQueue<Integer> queuePq = new
      PriorityQueue<>(Collections.reverseOrder());

      // inserting elements
      queuePq.add(7);
      queuePq.add(9);
      queuePq.add(2);
      queuePq.add(1);
      queuePq.add(3);

      System.out.println("Original Queue: " + queuePq);
      int head1 = queuePq.peek(); // accessing first element

      System.out.println("The first element in Queue: " + head1);
      queuePq.remove(9); // removing first element
      queuePq.offer(8); // adding new element at first position
      int head2 = queuePq.peek(); // accessing first element

      System.out.println("The updated first element in Queue: " + head2);
      queuePq.offer(9); // adding new element at first position
      System.out.println("Newly updated Queue: " + queuePq);
   }
}

输出

Original Queue: [9, 7, 2, 1, 3]
The first element in Queue: 9
The updated first element in Queue: 8
Newly updated Queue: [9, 7, 8, 1, 3, 2]

结论

我们从定义Java Collection Framework中实现Queue接口的PriorityQueue类开始了本文。在下一节中,我们讨论了一些用于修改给定PriorityQueue元素的Java程序中使用的内置方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程