java.util.ArrayDeque類使用方法詳解
本文為大家介紹了java.util.ArrayDeque類使用方法,供大家參考,具體內(nèi)容如下
1. ArrayDeque有兩個(gè)類屬性,head和tail,兩個(gè)指針。
2. ArrayDeque通過一個(gè)數(shù)組作為載體,其中的數(shù)組元素在add等方法執(zhí)行時(shí)不移動(dòng),發(fā)生變化的只是head和tail指針,而且指針是循環(huán)變化,數(shù)組容量不限制。
3. offer方法和add方法都是通過其中的addLast方法實(shí)現(xiàn),每添加一個(gè)元素,就把元素加到數(shù)組的尾部,此時(shí),head指針沒有變化,而tail指針加一,因?yàn)橹羔樖茄h(huán)加的,所以當(dāng)tail追上head((this.tail = this.tail + 1 & this.elements.length - 1) == this.head)時(shí),數(shù)組容量翻一倍,繼續(xù)執(zhí)行。
4. remove方法和poll方法都是通過其中的pollFirst方法實(shí)現(xiàn),每移除一個(gè)元素,該元素所在位置變成null,此時(shí),tail指針沒有變化,而head指針加一,當(dāng)數(shù)組中沒有數(shù)據(jù)時(shí),返回null。
5. 因?yàn)锳rrayDeque不是線程安全的,所以,用作堆棧時(shí)快于 Stack,在用作隊(duì)列時(shí)快于 LinkedList。
package com.what21.collect11; import java.util.ArrayDeque; import java.util.Deque; public class ArrayDequeDemo { /** * @param args */ public static void main(String[] args) { Deque<Object> data = new ArrayDeque<Object>(); // 增加元素 for (int i = 0; i < 20; i++) { data.push("www.what21.com ." + i + " "); } // 刪除第一個(gè) data.removeFirst(); // 獲取第一個(gè) System.out.println(data.peekFirst()); // 增加到最后 data.addLast("www.what21.com .9999"); // System.out.println(data); // 遍歷 for(Object o : data){ System.out.println(o); } } }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Springboot項(xiàng)目快速實(shí)現(xiàn)過濾器功能
上篇文章已經(jīng)給大家介紹了Springboot項(xiàng)目如何快速實(shí)現(xiàn)Aop功能,這篇文章給大家介紹Springboot項(xiàng)目如何快速實(shí)現(xiàn)過濾器功能,感興趣的小伙伴可以參考閱讀2023-03-03Springboot整合Shiro實(shí)現(xiàn)登錄與權(quán)限校驗(yàn)詳細(xì)解讀
本文給大家介紹Springboot整合Shiro的基本使用,Apache?Shiro是Java的一個(gè)安全框架,Shiro本身無法知道所持有令牌的用戶是否合法,我們將整合Shiro實(shí)現(xiàn)登錄與權(quán)限的驗(yàn)證2022-04-04SpringMVC請(qǐng)求/響應(yīng)亂碼問題解決方案解析
這篇文章主要介紹了SpringMVC請(qǐng)求/響應(yīng)亂碼問題解決方案解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Java創(chuàng)建可執(zhí)行JAR文件的多種方式
本文主要介紹了Java創(chuàng)建可執(zhí)行JAR文件的多種方式,使用JDK的jar工具、IDE、Maven和Gradle來創(chuàng)建和配置可執(zhí)行JAR文件,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07spring cloud zuul修改請(qǐng)求url的方法
這篇文章主要給大家介紹了關(guān)于spring cloud zuul修改請(qǐng)求url的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring cloud具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-09-09淺談Spring Data Redis讀不到設(shè)進(jìn)去的值
本文主要介紹了Spring Data Redis怎么讀不到我剛才設(shè)進(jìn)去的值,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09簡單談?wù)凷truts動(dòng)態(tài)表單(DynamicForm)
下面小編就為大家?guī)硪黄唵握務(wù)凷truts動(dòng)態(tài)表單(DynamicForm)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08Java內(nèi)部類原理與用法實(shí)例總結(jié)
這篇文章主要介紹了Java內(nèi)部類原理與用法,結(jié)合實(shí)例形式總結(jié)分析了非靜態(tài)內(nèi)部類、靜態(tài)內(nèi)部類、局部類等相關(guān)概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-08-08