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]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP