JAVA Queue的簡單實現
佇列是資料結構中比較重要的一種型別,他支援先進先出,跟生活中的排隊一樣,這一點剛好和Stack(棧)相反。
Android中最熟悉的莫過於MessageQueue了,諾!就像下圖這張圖一樣,從前面拿出來後面塞進去,android中有一個死迴圈在不停地搞這個事。
那麼java中怎麼玩這個呢,我們來寫個簡單的demo,等以後技術好了再來擴充套件一下。
最終打印出來的size為0,那就說明我們塞進去的元素已經全部remove掉了。public class TestQueue { public static void main(String[] args) { //例項化一個佇列 Queue<String> queue = new LinkedList<>(); for (int i = 0; i < 100; i++) { //新增一個元素到佇列裡面 queue.offer(i+""); //我們在這裡for each列印佇列裡面的元素 for (String string : queue) { System.out.println("列印:"+string); try { Thread.sleep(1000); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } //獲取並remove佇列的第一個元素 queue.poll(); } //最後將佇列的size列印一下 System.out.println(queue.size()); } }
下面我們來熟悉一下Queue的幾個常用的方法。
插入:add() / offer()
這裡add和offer都是尾部新增,區別就是add新增失敗(比如:queue滿了)會丟擲異常,而offer即使失敗也不會掛掉,只是返回false。
移除: remove() / poll()
都是移除佇列的第一個元素,區別在於當佇列為空時,remove()丟擲異常,而poll()返回一個空,所以這裡我們得注意了,如果移除元素用的是poll()函式,那麼千萬的不要往佇列裡面插入null,否則你無法判斷返回的null是不是佇列為空還是獲取的值為nul。
Examine:element() / peek()
這兩個函式都是獲取佇列的第一個元素,但是不會移除元素,同樣的當佇列為空時element()丟擲異常,而peek()返回一個null。
這裡感謝老司機張拭心得文章:
相關推薦
【java】簡單實現數據庫連接池
zed cal lean jdbc stat eof LEDE import thread 一直在想java事務是怎麽實現的,在原聲jdbc的時候級別下,我們可以通過關掉autocommit 然後再手動commit。但是項目開發中基本上是看不見conection的。所以自己
負載均衡演算法---Java的簡單實現(1)
最近,大夥常在談論什麼負載均衡,什麼伺服器的,而自己對於這一塊也是不太理解深入模糊,然後就去看書學習,印證自己的想法。下面是自己的一些總結吧: 比較常用的負載均衡演算法,有下面的這一些: (1)輪詢(其實就是迴圈) (2)隨機 (3)hash (4)加權輪詢
基於《仙劍奇俠傳柔情版》利用Java的簡單實現(一)
基於《仙劍奇俠傳柔情版》利用Java的簡單實現(一) 2018-12-01 23:55:36 by Louis 一,新建一個類GameFrame.class,具體程式碼如下: package firstDemo; import javax.swing.JF
《仙劍奇俠傳柔情版》Java的簡單實現(二)
基於《仙劍奇俠傳柔情版》Java的簡單實現(二) 2018-12-02 by louis 需要上次的GameFrame.class中視窗框架承載:https://www.cnblogs.com/louis6575/p/10051873.html 當時沒有學過JButt
java最簡單實現Log列印和生成日誌檔案
導包 1.commons-logging.jar包 下載 2.log4j.jar包 下載 配置log4j 1.在src根目錄下建立一個log4j.properties檔案。 檔案全部內容如下: log4j.rootLogger=CONSOLE,stdout
java,簡單實現cglib動態代理。
Cglib是動態代理的一種實現方式,用來代理普通的javaBean, /** * 實現MethodInterceptor * @author MyComputer * */ public class CGLibProxy implements MethodInt
Java servlet 簡單實現http檔案下載斷點續傳功能
斷點續傳,聽上去似乎是個比較高階的話題,本文只講述一下http版的斷點續傳,其他協議的大家可以自行研究。 http協議中,服務端實現斷點續傳首先需要讀取客戶端傳送的Range頭資訊,比如“Range: bytes=12583394-”這個就是指原來正在下載的檔案需要從第12
訊息佇列Java的簡單實現
此文章是剛畢業的時候比較懵懂寫的,實際上不可稱之為訊息佇列,等我有空了會更新一篇關於主流mq的文章,謝謝包容(20171123) 今天看到我們的招聘資訊有對訊息佇列有要求,然後就思索了一翻,網上一搜一大堆。 我可以舉個小例子先說明應用場景 假設你的伺服器每分鐘的處理量為2
【JAVA】簡單實現一個阻塞任務佇列
package p18.juc; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CountDownL
什麼是socket?什麼是socket的長、短連線?java如何簡單實現socket客戶端和伺服器?
*socket就是套接字,是一種通訊方式!採用這種方式可以實現客戶端和伺服器之間的通訊! 百度百科的解釋: Socket的英文原義是“孔”或“插座”。作為BSD UNIX的程序通訊機制,取後一種意思。通常也稱作"套接字",用於描述IP地址和埠,是一個通訊鏈的控
java分散式簡單實現
案例:文章推薦 論壇進入文章頁面後,顯示一個推薦列表:看過這篇文章的人還看過哪些文章,包含列為文章article、點選數count。 可能有很好很簡單的解決辦法,但是到最後再講。 傳統的方法是:建一張表,欄位有article和user。每點選一次,增加一條記錄。一個大論壇幾
java LinkedList簡單實現
時間:2018/7/27 簡單是實現了LinkedList的幾個方法,還是JAVA好啊 ,沒有指標 就是對連結串列的一些簡單操作 package c11; public class CopyLinkedList { private Node first;
java最簡單實現LRUCache
import java.util.LinkedHashMap; import java.util.Map; public LRUCache<K, V> extends LinkedHashMap<K, V> { priva
JAVA Queue的簡單實現
佇列是資料結構中比較重要的一種型別,他支援先進先出,跟生活中的排隊一樣,這一點剛好和Stack(棧)相反。 Android中最熟悉的莫過於MessageQueue了,諾!就像下圖這張圖一樣,從前面拿出來後面塞進去,android中有一個死迴圈在不停地搞這個事。 那麼jav
對稱加密詳解,以及JAVA簡單實現
turn bsp 十進制 stat mage 需要 對稱密鑰 else ges (原) 常用的加密有3種 1、正向加密,如MD5,加密後密文固定,目前還沒辦法破解,但是可以能過數據庫撞庫有一定概率找到,不過現在一般用這種方式加密都會加上鹽值。 2、對稱加密,通過一個固定
Java web文件服務器的簡單實現
是否 auth cor multi 同步 登錄驗證 stp while break 我們公司在做一個在線考試平臺,平臺在發布文章、編輯試題時需要將文章生成的html文檔以及題中的圖片上傳到一個專門文件服務器,然後再界面中使用http鏈接上傳的文件。 基於這個考慮,需要實現一
java倒計時三種簡單實現方式
idt 使用 instance too rgs 設置 private block ace 寫完js倒計時,突然想用java實現倒計時,寫了三種實現方式 一:設置時長的倒計時; 二:設置時間戳的倒計時; 三:使用java.util.Timer類實現的時間戳倒計時 代碼如下:
幾種簡單的負載均衡算法及其Java代碼實現
hsb p12 vld tar www. 簡單的 sin all .com jdsbuy肇岡唾氈瀉節http://www.docin.com/app/user/userinfo?userid=179258715a4cqu2瘟萄優歐壹讜http://huiyi.docin.c
簡單實現java線程池
隊列 imp trac poi resize ren .com lsi urn 使用多線程以及線程池的意義無需多說,要想掌握線程池,最好的方法還是自己手動去實現。 一、實現思路 (網絡盜圖) 總的來說,所有的任務在Block
java連接mysql簡單實現
連接mysql 數據庫 創建過程 tab 地址 databases def eat style 因為最近要做一個涉及到數據庫的具體應用,選擇數據庫mysql,用java連接mysql做一個學生信息管理系統的簡單版本。 工具:eclipse,jdbc,mysql 如上