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.