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中的一個介面,每個元素都與優先順序相關聯。可以使用各種佇列函式來使用其功能。

更新於: 2023年2月22日

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.