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方法實(shí)現(xiàn),每添加一個元素,就把元素加到數(shù)組的尾部,此時,head指針沒有變化,而tail指針加一,因?yàn)橹羔樖茄h(huán)加的,所以當(dāng)tail追上head((this.tail = this.tail + 1 & this.elements.length - 1) == this.head)時,數(shù)組容量翻一倍,繼續(xù)執(zhí)行。
4. remove方法和poll方法都是通過其中的pollFirst方法實(shí)現(xiàn),每移除一個元素,該元素所在位置變成null,此時,tail指針沒有變化,而head指針加一,當(dāng)數(shù)組中沒有數(shù)據(jù)時,返回null。
5. 因?yàn)锳rrayDeque不是線程安全的,所以,用作堆棧時快于 Stack,在用作隊(duì)列時快于 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)文章
Java實(shí)現(xiàn)解壓zip和rar包的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)解壓zip和rar包,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
基數(shù)排序簡介及Java語言實(shí)現(xiàn)
這篇文章主要介紹了基數(shù)排序簡介及Java語言實(shí)現(xiàn),涉及基數(shù)排序的基本思想簡單介紹和桶排序的分析,以及基數(shù)排序的Java實(shí)現(xiàn),具有一定借鑒價值,需要的朋友可以參考下。2017-11-11
SpringBoot請求發(fā)送與信息響應(yīng)匹配實(shí)現(xiàn)方法介紹
RestTemplate發(fā)送HTTP?POST請求使用方法詳解
SpringCloud Eureka Provider及Consumer的實(shí)現(xiàn)
java中List對象列表實(shí)現(xiàn)去重或取出及排序的方法

