java.util.ArrayDeque類使用方法詳解
本文為大家介紹了java.util.ArrayDeque類使用方法,供大家參考,具體內(nèi)容如下
1. ArrayDeque有兩個類屬性,head和tail,兩個指針。
2. ArrayDeque通過一個數(shù)組作為載體,其中的數(shù)組元素在add等方法執(zhí)行時不移動,發(fā)生變化的只是head和tail指針,而且指針是循環(huán)變化,數(shù)組容量不限制。
3. offer方法和add方法都是通過其中的addLast方法實現(xiàn),每添加一個元素,就把元素加到數(shù)組的尾部,此時,head指針沒有變化,而tail指針加一,因為指針是循環(huán)加的,所以當(dāng)tail追上head((this.tail = this.tail + 1 & this.elements.length - 1) == this.head)時,數(shù)組容量翻一倍,繼續(xù)執(zhí)行。
4. remove方法和poll方法都是通過其中的pollFirst方法實現(xiàn),每移除一個元素,該元素所在位置變成null,此時,tail指針沒有變化,而head指針加一,當(dāng)數(shù)組中沒有數(shù)據(jù)時,返回null。
5. 因為ArrayDeque不是線程安全的,所以,用作堆棧時快于 Stack,在用作隊列時快于 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 + " "); } // 刪除第一個 data.removeFirst(); // 獲取第一個 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)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Springboot整合Shiro實現(xiàn)登錄與權(quán)限校驗詳細解讀
本文給大家介紹Springboot整合Shiro的基本使用,Apache?Shiro是Java的一個安全框架,Shiro本身無法知道所持有令牌的用戶是否合法,我們將整合Shiro實現(xiàn)登錄與權(quán)限的驗證2022-04-04SpringMVC請求/響應(yīng)亂碼問題解決方案解析
這篇文章主要介紹了SpringMVC請求/響應(yīng)亂碼問題解決方案解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12Java創(chuàng)建可執(zhí)行JAR文件的多種方式
本文主要介紹了Java創(chuàng)建可執(zhí)行JAR文件的多種方式,使用JDK的jar工具、IDE、Maven和Gradle來創(chuàng)建和配置可執(zhí)行JAR文件,具有一定的參考價值,感興趣的可以了解一下2024-07-07淺談Spring Data Redis讀不到設(shè)進去的值
本文主要介紹了Spring Data Redis怎么讀不到我剛才設(shè)進去的值,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09簡單談?wù)凷truts動態(tài)表單(DynamicForm)
下面小編就為大家?guī)硪黄唵握務(wù)凷truts動態(tài)表單(DynamicForm)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08