Java中靜態佇列和單鏈表的區別


在Java中,List和Queue都被定義為物件的順序列表,其中同一個物件可以新增多次。兩者之間的區別在於新增元素的方式。在佇列中,所有元素都從隊尾插入,從隊頭刪除,而可以在列表中的任何位置新增元素。

序號關鍵點靜態佇列單鏈表
1資料初始化靜態佇列採用先進先出 (FIFO) 的方式工作,所有元素都從佇列的隊尾插入,從隊頭刪除。對於單鏈表,可以在列表中的任何位置新增元素,也可以根據其在列表中的索引獲取任何元素。
2內部實現佇列內部使用陣列實現,這使得它在搜尋和新增元素方面更快。另一方面,列表使用節點和指標來儲存資料和下一個節點的地址。
3大小靜態佇列的大小是固定的,不能更改。佇列的大小在其宣告時定義。列表沒有固定大小,因此在宣告列表時不需要指定大小。
4效能在搜尋元素方面,靜態佇列更快,而刪除元素則較慢,因為刪除需要將所有剩餘元素向前移動一個位置。由於其基於節點的實現,列表在搜尋方面較慢,但刪除速度更快,因為只需要更新一個節點的指標地址,而無需更新整個列表。
5資料遷移靜態佇列始終基於先進先出 (FIFO) 技術。另一方面,列表可以是FIFO或後進先出 (LIFO)。

靜態佇列和單鏈表的示例

StaticQueueDemo.java

 線上演示

import java.util.*;
public class StaticQueueDemo {
   public static void main(String args[]) {
      PriorityQueue < String > queue = new PriorityQueue < String > ();
      queue.add("Jack");
      queue.add("Smith");
      queue.add("John");
      System.out.println("head:" + queue.element());
      System.out.println("head:" + queue.peek());
      System.out.println("iterating the queue elements:");
      Iterator itr = queue.iterator();
      while (itr.hasNext()) {
         System.out.println(itr.next());
      }
      queue.remove();
      queue.poll();
      System.out.println("after removing two elements:");
      Iterator < String > itr2 = queue.iterator();
      while (itr2.hasNext()) {
         System.out.println(itr2.next());
      }
   }
}

輸出

head:Jack
head:Jack
iterating the queue elements:
Jack
Smith
John
after removing two elements:
Smith

示例

LinkedListDemo.java

 線上演示

import java.util.*;
public class LinkedListDemo {
   public static void main(String[] args) {
      // Creating a LinkedList
      LinkedList < String > friends = new LinkedList <> ();
      // Adding new elements to the end of the LinkedList using add() method.
      friends.add("John");
      friends.add("Jack");
      friends.add("Smith");
      friends.add("Chris");
      System.out.println("Initial LinkedList : " + friends);
      // Adding an element at the specified position in the LinkedList
      friends.add(3, "Lisa");
      System.out.println("After add(3, \"Lisa\") : " + friends);
   }
}

輸出

Initial LinkedList : [John, Jack, Smith, Chris]
After add(3,"Lisa") : [John, Jack, Smith, Chris, Lisa]

更新於:2019年9月16日

764 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.