本文為大家介紹了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)加的,所以當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指針加一,當數(shù)組中沒有數(shù)據(jù)時,返回null。
5. 因為ArrayDeque不是線程安全的,所以,用作堆棧時快于 Stack,在用作隊列時快于 LinkedList。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
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)容,希望對大家的學習有所幫助。