- 隊列
package queueTest;
import java.util.LinkedList;
import java.util.Queue;
/**
* 隊列
* 與集合相似,可以保存一組元素昼窗。但是不能任意訪問
* 其中元素麦备。存取必須遵循先進先出原則恕曲。
* @author Administrator
*
*/
public class QueueDemo {
public static void main(String[] args) {
/*
* 由于LinkedList可以存放一組元素,并且
* 增刪效率比較高仁期,所以其也實現(xiàn)了Queue接口
* 可以看做是一個隊列使用。
*/
Queue<String> queue
= new LinkedList<String>();
/*
* boolean offer(E e)
* 向隊列末尾追加一個新元素
*/
queue.offer("one");
queue.offer("two");
queue.offer("three");
queue.offer("four");
System.out.println(queue);
/*
* E poll()
* 從隊首獲取元素,并且將該元素從隊列中
* 刪除
*/
String str = queue.poll();
System.out.println(str);
System.out.println(queue);
/*
* E peek()
* 該方法也會獲取隊首元素,但是不會做
* 出隊操作蕊温,該元素不會從隊列中被刪除
*/
str = queue.peek();
System.out.println(str);
System.out.println(queue);
System.out.println(queue.size());
/*
* 遍歷隊列
*/
while(queue.size()>0){
str = queue.poll();
System.out.println(str);
}
System.out.println(queue);
}
}
- 棧
package stackTest;
import java.util.Deque;
import java.util.LinkedList;
/**
* 棧
* 存放一組元素,存取必須遵循先進后出原則
* 一般應(yīng)用于操作的可追溯性(后退功能)
* @author Administrator
*
*/
public class StackDemo {
public static void main(String[] args) {
/*
* java沒有為棧單獨設(shè)計類型遏乔。
* 使用雙端隊列實現(xiàn)义矛,只調(diào)用一側(cè)的進出隊
* 方法,就形成了棧盟萨。
* 不過雙端隊列由于具有棧的特性凉翻,所以為此
* 給棧單獨定義了從一側(cè)進出的兩個方法
* push,pop
*/
Deque<String> stack
= new LinkedList<String>();
/*
* void push(E e)
* 將元素"壓入"棧中
* 入棧操作,新進去的元素在棧頂(第一個位置)
*/
stack.push("one");
stack.push("two");
stack.push("three");
stack.push("four");
System.out.println(stack);
/*
* E pop()
* 出棧操作捻激。獲取棧頂元素制轰。獲取后該元素
* 會從棧中刪除。
*/
String str = stack.pop();
System.out.println(str);
System.out.println(stack);
//peek同樣可以使用
str = stack.peek();
System.out.println(str);
System.out.println(stack);
//遍歷
while(stack.size()>0){
str = stack.pop();
System.out.println(str);
}
System.out.println(stack);
}
}