欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析Java中的隊列和用LinkedList集合模擬隊列的方法

 更新時間:2015年08月06日 10:27:53   作者:zinss26914  
這篇文章主要介紹了解析Java中的隊列和用LinkedList集合模擬隊列的方法,相關算法的實現也是ACM中的常見題目,需要的朋友可以參考下

API中對隊列的說明:
 

public interface Queue<E>
extends Collection<E>

在處理元素前用于保存元素的 collection。除了基本的 Collection 操作外,隊列還提供其他的插入、提取和檢查操作。每個方法都存在兩種形式:一種拋出異常(操作失敗時),另一種返回一個特殊值(null 或 false,具體取決于操作)。插入操作的后一種形式是用于專門為有容量限制的 Queue 實現設計的;在大多數實現中,插入操作不會失敗。

201586102759996.jpg (209×150)

隊列通常(但并非一定)以 FIFO(先進先出)的方式排序各個元素。不過優(yōu)先級隊列和 LIFO 隊列(或堆棧)例外,前者根據提供的比較器或元素的自然順序對元素進行排序,后者按 LIFO(后進先出)的方式對元素進行排序。無論使用哪種排序方式,隊列的頭 都是調用 remove() 或 poll() 所移除的元素。在 FIFO 隊列中,所有的新元素都插入隊列的末尾。其他種類的隊列可能使用不同的元素放置規(guī)則。每個 Queue 實現必須指定其順序屬性。
如果可能,offer 方法可插入一個元素,否則返回 false。這與 Collection.add 方法不同,該方法只能通過拋出未經檢查的異常使添加元素失敗。offer 方法設計用于正常的失敗情況,而不是出現異常的情況,例如在容量固定(有界)的隊列中。
remove() 和 poll() 方法可移除和返回隊列的頭。到底從隊列中移除哪個元素是隊列排序策略的功能,而該策略在各種實現中是不同的。remove() 和 poll() 方法僅在隊列為空時其行為有所不同:remove() 方法拋出一個異常,而 poll() 方法則返回 null。
element() 和 peek() 返回,但不移除,隊列的頭。
Queue 接口并未定義阻塞隊列的方法,而這在并發(fā)編程中是很常見的。BlockingQueue 接口定義了那些等待元素出現或等待隊列中有可用空間的方法,這些方法擴展了此接口。
Queue 實現通常不允許插入 null 元素,盡管某些實現(如 LinkedList)并不禁止插入 null。即使在允許 null 的實現中,也不應該將 null 插入到 Queue 中,因為 null 也用作 poll 方法的一個特殊返回值,表明隊列不包含元素。
Queue 實現通常未定義 equals 和 hashCode 方法的基于元素的版本,而是從 Object 類繼承了基于身份的版本,因為對于具有相同元素但有不同排序屬性的隊列而言,基于元素的相等性并非總是定義良好的。

在java里使用隊列可以用LinkedList集合進行模擬


方法
使用LinkedList集合,并使用其中的addLast、removeFirst、isEmpty等API集體模擬隊列操作

入隊列

  void addLast(E e); // 將元素插入此列表的結尾 

出隊列

  E removeFirst(); // 移除并返回列表的第一個元素 

判空

  boolean isEmpty(); // 判斷隊列是否為空  

示例代碼

    

package coreJavaOne; 
   
  import java.util.LinkedList; 
  import java.util.NoSuchElementException; 
   
  public class SimulateQueue { 
    private LinkedList<Integer> queue = new LinkedList<Integer>(); 
   
    public boolean isEmpty() { 
      return this.queue.isEmpty(); 
    } 
   
    public void enQueue(int data) { 
      this.queue.addLast(data); 
    } 
   
    public int deQueue() throws NoSuchElementException { 
      return this.queue.removeFirst(); 
    } 
   
    public static void main(String[] args) { 
      SimulateQueue q = new SimulateQueue(); 
   
      q.enQueue(1); 
      q.enQueue(2); 
      q.enQueue(3); 
   
      while (! q.isEmpty()) { 
        int data = q.deQueue(); 
        System.out.println(data); 
      } 
    } 
  } 

您可能感興趣的文章:

相關文章

  • SpringMVC攔截器——實現登錄驗證攔截器的示例代碼

    SpringMVC攔截器——實現登錄驗證攔截器的示例代碼

    本篇文章主要介紹了SpringMVC攔截器——實現登錄驗證攔截器的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Springboot+Thymeleaf+Jpa實現登錄功能(附源碼)

    Springboot+Thymeleaf+Jpa實現登錄功能(附源碼)

    最近有學習到關于Springboot+Thymeleaf+Jpa的綜合運用知識,因此想寫一個簡單的登錄界面來嘗試一下,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • 詳解Java爬蟲利器Jsoup

    詳解Java爬蟲利器Jsoup

    Jsoup是一款Java語言開發(fā)的HTML解析器,用于解析HTML文檔以及對HTML文檔進行操作,處理等,本文就將詳細給大家介紹一下Java中的爬蟲利器Jsoup,感興趣的同學可以參考一下
    2023-06-06
  • Java中迭代器Iterator的使用解析

    Java中迭代器Iterator的使用解析

    Java采用了迭代器來為各種容器提供了公共的操作接口,下面通過本文給大家分享Java中迭代器Iterator的使用解析,需要的朋友參考下吧
    2017-09-09
  • 利用Java+OpenCV實現拍照功能

    利用Java+OpenCV實現拍照功能

    網上大多是利用C語言或者Python實現拍照功能,本文將為大家介紹另一種方法,即在Java中調用OpenCV實現拍照功能,感興趣的可以了解一下
    2022-01-01
  • java文件上傳至ftp服務器的方法

    java文件上傳至ftp服務器的方法

    這篇文章主要為大家詳細介紹了java文件上傳至ftp服務器的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java圖片和文本同時提交到表單的實例代碼

    java圖片和文本同時提交到表單的實例代碼

    在本篇文章里小編給大家整理的是關于java實現圖片和文本同時提交到表單的相關內容,有需要的朋友們可以學習下。
    2020-02-02
  • Mybatis-Spring源碼分析圖解

    Mybatis-Spring源碼分析圖解

    這篇文章主要介紹了Mybatis-Spring源碼分析,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 淺析Spring?Cloud?Gateway中的令牌桶限流算法

    淺析Spring?Cloud?Gateway中的令牌桶限流算法

    這篇文章主要為大家淺析了Spring?Cloud?Gateway中的令牌桶限流算法原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • Java的springcloud Sentinel是什么你知道嗎

    Java的springcloud Sentinel是什么你知道嗎

    這篇文章主要介紹了Java之springcloud Sentinel案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08

最新評論