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