Java中优先队列和队列实现的区别?
队列是一种线性数据结构,从队尾插入元素,从队首移除元素。
优先队列是普通队列的扩展版本,每个元素都有优先级。在本教程中,我们将学习Java中的队列和优先队列及其各自的实现。
Java中优先队列和队列的区别
方面 |
优先队列 |
队列 |
|---|---|---|
定义 |
优先队列是指每个元素都具有优先级的队列。队列中的元素根据其优先级移除。 |
队列是Java中的一个接口,使用FIFO原则移除其元素。 |
类型 |
最小优先队列和最大优先队列。 |
它没有类型。 |
结构 |
优先队列中的每个元素都有优先级。 |
队列元素没有优先级。 |
出队操作 |
元素根据其最高优先级移除。 |
队列中的元素按照FIFO顺序移除。 |
元素排序 |
它是一个有序队列,使得搜索更容易。 |
它是一个随机组织的队列。 |
复杂度 |
优先队列的实现比较困难。 |
它是一个简单的队列,易于实现。 |
语法 |
PriorityQueue <数据类型> queue_name = new PriorityQueue<>(); |
Queue<数据类型> queue_name = new LinkedList<>(); |
属性 |
优先队列继承了AbstractCollection、AbstractQueue、Object和Collection类的的方法。 |
它使用队列接口和util包在Java中实现队列。 |
操作 |
入队和出队元素并不容易。 |
插入和移除元素非常容易。 |
优点 |
很容易出队最高优先级的元素。 |
队列不浪费内存,并有效地利用内存。 |
缺点 |
插入和删除元素需要更多时间。 |
它具有有限的空间并且无序。 |
出队和入队时间复杂度 |
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中的一个接口,每个元素都与优先级相关联。可以使用各种队列函数来使用其功能。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP