Java 优先队列和队列实现的区别

Java 优先队列和队列实现的区别

队列是一种线性数据结构,从队列的后面插入元素,从队列的起始端删除元素。

优先级队列是普通队列的一个扩展版本,每个元素都有优先级。在本教程中,我们将学习Java中的队列和优先级队列的个别实现。

Java中的优先队列和队列的区别

地区 优先级队列 队列
定义 优先级队列是指队列中的每个元素都有一些优先级。队列中的元素根据其优先级被删除。 队列是Java中的一个接口,它使用先进先出原则来删除其元素。
类型 最小优先级队列和最大优先级队列。 它没有类型。
结构 优先级队列中的每个元素都有优先级。 队列中的元素没有优先权。
删除队列操作 元素在其最高优先级的基础上被删除。 队列中的元素按FIFO顺序被删除。
元素排序 它是一个有序的队列,使搜索变得容易。 它是一个随机组织的队列。
复杂性 实现优先级队列很困难。 这是一个简单的队列,易于实现。
语法 PriorityQueue queue_name = new PriorityQueue<>()。 Queue queue_name = new LinkedList<>();
属性 优先级队列继承了AbstractCollection、AbstractQueue、Object和Collection类的方法。 它使用queue接口和util包来实现Java中的队列。
操作 对元素进行enQueue和deQueue并不容易。 插入和删除元素是非常容易的。
优势 很容易对最高顺序的元素进行取消队列。 队列不浪费内存并有效地利用它。
劣势 在插入和删除元素时需要更多时间。 它的空间有限,而且没有顺序。
deQueue和enQueue时间复杂度 O(log(n)) O(1)

优先队列和队列在Java中的实现

例子1

在Java中实现队列

队列的语法

Queue<data type> queue_name = new LinkedList<>();

在java中实现队列的代码

import java.util.*; // importing util package with all its features
public class Main  {
   public static void main(String[] args) {
      Queue<Integer> q = new LinkedList<>(); // queue declaration
      q.add(5); //adding elements to the queue
      q.add(6);
      q.add(4);
      q.add(1);
      q.add(8);

      System.out.println("Queue is" + q);
      System.out.println("Removing queue element: " + q.remove());
      System.out.println("Now the Queue is: " + q);
   }
}

输出

Queue is [5, 6, 4, 1, 8]
Removing queue element: 5
Now the Queue is: [6, 4, 1, 8]

实例2

在Java中实现优先级队列

优先级队列的语法

PriorityQueue <data type> queue_name = new PriorityQueue<>();

用Java实现优先队列的代码

import java.util.*;

public class PriorityQueueExample {
   public static void main(String[] args) {
      //declaring priority queue q of string type

      PriorityQueue <String> p = new PriorityQueue<>(); 
      // inserting elements into the priority queue

      p.add("Life");
      p.add("is");
      p.add("Coding");
      System.out.println("Priority Queue is " + p);
   }
}

输出

Priority Queue is [Coding, is, Life]

例3

优先级队列中的poll()方法

import java.util.*;

public class PriorityQueueExample {
   public static void main(String[] args) {
      PriorityQueue <Integer> p = new PriorityQueue<>();
      p.add(5);
      p.add(7);
      p.add(1);
      System.out.println("Priority Queue is: " + p);
      int i = p.poll();
      System.out.println("Head element: " +i);
      System.out.println("Queue after removing head element: "+p);
   }
}

输出

Priority Queue is: [1, 7, 5]
Head Element: [1]
Queue after removing head element: [5, 7]

结论

Java中的队列是一种线性数据结构,被用于广度优先搜索算法中。优先队列是普通队列的扩展,它是java中的一个接口,其每个元素都有相关的优先权。人们可以使用各种队列函数来使用其功能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程