java.util.Queue用法

隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。

在隊列這種數據結構中,最先插入的元素將是最先被刪除的元素;反之最后插入的元素將是最后被刪除的元素,因此隊列又稱為“先進先出”(FIFO—first in first out)的線性表。

在java5中新增加了java.util.Queue接口,用以支持隊列的常見操作。該接口擴展了java.util.Collection接口。

Queue使用時要盡量避免Collection的add()和remove()方法,而是要使用offer()來加入元素,使用poll()來獲取并移出元素。它們的優點是通過返回值可以判斷成功與否,add()和remove()方法在失敗的時候會拋出異常。 如果要使用前端而不移出該元素,使用
element()或者peek()方法。

值得注意的是LinkedList類實現了Queue接口,因此我們可以把LinkedList當成Queue來用。

package com.ljq.test;import java.util.LinkedList;
import java.util.Queue;public class QueueTest {public static void main(String[] args) {//add()和remove()方法在失敗的時候會拋出異常(不推薦)Queue<String> queue = new LinkedList<String>();//添加元素queue.offer("a");queue.offer("b");queue.offer("c");queue.offer("d");queue.offer("e");for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("poll="+queue.poll()); //返回第一個元素,并在隊列中刪除for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("element="+queue.element()); //返回第一個元素 for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("peek="+queue.peek()); //返回第一個元素 for(String q : queue){System.out.println(q);}}
}

java5中新增加了java.util.Queue接口,用以支持隊列的常見操作。該接口擴展了java.util.Collection接口。
Queue使用時要盡量避免Collection的add()和remove()方法,而是要使用offer()來加入元素,使用poll()來獲取并移出元素。它們的優
點是通過返回值可以判斷成功與否,add()和remove()方法在失敗的時候會拋出異常。 如果要使用前端而不移出該元素,使用
element()或者peek()方法。
值得注意的是LinkedList類實現了Queue接口,因此我們可以把LinkedList當成Queue來用。
小例子:

/**
*
* @author Zang XT
*/
import java.util.Queue;
import java.util.LinkedList;
public class TestQueue {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<String>();
queue.offer("Hello");
queue.offer("World!");
queue.offer("你好!");
System.out.println(queue.size());
String str;
while((str=queue.poll())!=null){
System.out.print(str);
}
System.out.println();
System.out.println(queue.size());
}
}

offer,add區別:
一些隊列有大小限制,因此如果想在一個滿的隊列中加入一個新項,多出的項就會被拒絕。
這時新的 offer 方法就可以起作用了。它不是對調用 add() 方法拋出一個 unchecked 異常,而只是得到由 offer() 返回的 false。

poll,remove區別:
remove() 和 poll() 方法都是從隊列中刪除第一個元素(head)。remove() 的行為與 Collection 接口的版本相似,
但是新的 poll() 方法在用空集合調用時不是拋出異常,只是返回 null。因此新的方法更適合容易出現異常條件的情況。

peek,element區別:
element() 和 peek() 用于在隊列的頭部查詢元素。與 remove() 方法類似,在隊列為空時, element() 拋出一個異常,而 peek() 返回 null。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249719.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249719.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249719.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vim刪除文件到行首或者行尾

vim用的不是很熟練&#xff0c;只是有時候需要的時候會學習一下 我們知道&#xff0c;vim有三種模式&#xff0c;一種是一般模式&#xff0c;一種是編輯模式&#xff0c;另外一種是命令行模式 在一般模式下&#xff0c;可以進行刪除&#xff0c;復制粘貼等操作&#xff0c;在編…

新版本微信導致的ios表單bug

解決方法如下&#xff1a; $(document).delegate(input, textarea, select, blur, function(){setTimeout(function(){$(html).animate({height: 100.1vh}, 100, function(){$(this).animate({height: 100vh}, 1)})},100); }); 轉載于:https://www.cnblogs.com/qdlhj/p/1033676…

Golang的值類型和引用類型的范圍、存儲區域、區別

常見的值類型和引用類型分別有哪些&#xff1f; 值類型&#xff1a;基本數據類型 int 系列, float 系列, bool, string 、數組和結構體struct&#xff0c;使用這些類型的變量直接指向存在內存中的值&#xff0c;值類型的變量的值通常存儲在棧中。 引用類型&#xff1a;指針、sl…

python3之time模塊

時間戳1: import time2: print(time.time()) 可讀的時間格式1: import time2: print(time.ctime())3: later time.time() 6004: print(time.ctime(later)) 結果1: Wed Jan 30 17:11:49 20192: Wed Jan 30 17:21:49 2019 暫停程序(進程或者線程)1: time.sleep(secs) 計時時鐘1…

網絡規劃設計(項目類業務)

前期準備&#xff1a;找經開部要到當地的現場結構圖 1.和通信段約好時間&#xff0c;實地跑一趟&#xff0c;找到光纜、電纜的原匯聚點。 2.與車間人員溝通&#xff0c;看是否要遷匯聚點&#xff0c;倘若遷匯聚點&#xff0c;遷到哪里。 3.怎么從光纜/電纜的舊址遷到新址&#…

RPC框架實現原理

一、什么是RPC框架&#xff1f; RPC&#xff0c;全稱為Remote Procedure Call&#xff0c;即遠程過程調用&#xff0c;是一種計算機通信協議。 比如現在有兩臺機器&#xff1a;A機器和B機器&#xff0c;并且分別部署了應用A和應用B。假設此時位于A機器上的A應用想要調用位于B機…

jQuery安裝

http://www.runoob.com/jquery/jquery-install.html 網頁中添加jQuery&#xff1a; 方法一&#xff1a;可以從http://jquery.com/download/ 下載jQuery庫 方法二&#xff1a;從CDN中載入jQuery 下載 jQuery 有兩個版本的 jQuery 可供下載&#xff1a; Production version - 用于…

redhat相關配置

網絡配置&#xff1a; vi /etc/sysconfig/network-scripts/ifcfg-eth BOOTPROTOstaticONBOOTyesIP配置IPADDR192.168.31.102NETMASK255.255.255.0GATEWAY192.168.31.1DNS1192.168.31.1redhat6&#xff1a;防火墻&#xff1a;1. 永久性生效開啟&#xff1a;chkconfig iptables o…

zookeeper入門系列

zookeeper可謂是目前使用最廣泛的分布式組件了。其功能和職責單一&#xff0c;但卻非常重要。 在現今這個年代&#xff0c;介紹zookeeper的書和文章可謂多如牛毛&#xff0c;本人不才&#xff0c;試圖通過自己的理解來介紹zookeeper&#xff0c;希望通過一個初學者的視角來學習…

java.lang.NumberFormatException: multiple points錯誤問題

最近項目一直會出現時間轉換報錯&#xff0c;一直不知道是什么問題??? java.lang.NumberFormatException: multiple pointsat sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1110)at java.lang.Double.parseDouble(Double.java:540)at java.text.Dig…

plsql查詢數據中文亂碼

在plsql中進行表數據查詢的時候&#xff0c;發現查詢出來的中文居然顯示為亂碼&#xff0c;通過查找資料解決該問題。 1、查看數據的編碼&#xff08;語句&#xff1a;select * from v$nls_parameters&#xff09; 發現顯示的語言不是我們常用的GBK模式 2、配置本機語言環境變量…

Zookeeper的功能以及工作原理

1.ZooKeeper是什么&#xff1f; ZooKeeper是一個分布式的&#xff0c;開放源碼的分布式應用程序協調服務&#xff0c;是Google的Chubby一個開源的實現&#xff0c;它是集群的管理者&#xff0c;監視著集群中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終&#xf…

前端學習總結——CSS布局方式之傳統布局

傳統布局 傳統布局即是早期在平板電腦、智能手機等移動設備并不流行的時候使用的布局方式。 一、表格布局 例如&#xff1a;采用表格方式實現如下簡單模型的布局 &#xff08;1&#xff09;固定布局 即用具體的像素值來確定模型的寬和高等值。 HTML代碼如下所示 <tabl…

aspose word for java去除目錄文字藍色樣式以及文字下方藍色下劃線

//去除目錄文字藍色樣式以及文字下方藍色下劃線for(FieldStart field: (Iterable<FieldStart>)doc.getChildNodes(NodeType.FIELD_START, true)){if (field.getFieldType() FieldType.FIELD_HYPERLINK){FieldHyperlink hyperlink (FieldHyperlink)field.getField();//判…

[POI2007]MEG-Megalopolis

傳送門&#xff1a;嘟嘟嘟 第一反應是樹鏈剖分&#xff0c;但是太長懶得寫&#xff0c;然后就想出了一個很不錯的做法。 想一下&#xff0c;如果我們改一條邊&#xff0c;那么影響的只有他的子樹&#xff0c;只要先搞一個dfs序&#xff0c;為什么搞出這個呢&#xff1f;因為有一…

memcache在ThinkPHP中的使用1---PHP下安裝memcache

1.什么是Memcached緩存 Memcached是一套小巧、高效且成熟的內存數據庫。與普通的數據庫不同&#xff0c;Memcached存儲的數據只能是簡單的鍵值對&#xff0c;在查詢時需要根據存放的key獲取數據。 Memcached最大的特點是數據存放于內存&#xff0c;性能會比傳統文件系統高出…

【集合工具類:Collections】

集合工具類&#xff1a;Collections(1) 是針對集合進行操作的工具類(2) 面試題&#xff1a;Collection 和 Collections 的區別A:Collection 是單列集合的頂層接口&#xff0c;有兩個子接口 List 和 SetB:Collections 是針對集合進行操作的工具類&#xff0c;可以對集合進行排序…

骨骼收集器01背包

來源hdu2602 問題描述 許多年前&#xff0c;在泰迪的家鄉&#xff0c;有一個人被稱為“骨頭收藏家”。這個男人喜歡收集各種各樣的骨頭&#xff0c;比如狗狗&#xff0c;牛&#xff0c;還有他去了墳墓...... 骨頭收藏家有一個大容量的V袋&#xff0c;沿著他的收集之旅有很多骨頭…

ZooKeeper的安裝與部署

本文講述如何安裝和部署ZooKeeper。 一、系統要求 ZooKeeper可以運行在多種系統平臺上面&#xff0c;表1展示了zk支持的系統平臺&#xff0c;以及在該平臺上是否支持開發環境或者生產環境。 表1&#xff1a;ZooKeeper支持的運行平臺 | 系統 | 開發環境 | 生產環境| | Linux…

java基礎1之java語言基礎1

一、常量的概述和使用 A:什么是常量 * 在程序執行的過程中其值不可以發生改變 B:Java中常量的分類 * 字面值常量 * 自定義常量(面向對象部分講) C:字面值常量的分類 * 字符串常量 用雙引號括起來的內容 * 整數常量 所有整數 * 小數常量 所有小數 * 字符常量 …