import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
/**
* java.util.Queue 隊列,可以存儲一組元素,但是存取元素必須遵循先進先出原則 JDK
*
* @author samsung
*
*/
public class QueueDemo {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<String>();
/**
* 入隊操作 boolean offer(E e):將一個對象添加到隊尾,添加成功返回true
*/
queue.offer("one");
queue.offer("two");
queue.offer("three");
System.out.println("入隊:");
System.out.println(queue);// [one, two, three]
/**
* 出隊操作 從隊首獲取元素,獲取後該元素就從隊列中給移除 E poll():從隊首刪除並返回一個元素
*/
String str = queue.poll();
System.out.println("出隊:");
System.out.println(str);
System.out.println(queue);// [two, three]
/**
* 獲取隊首元素 E peek():返回隊首元素(但是不刪除)
*/
String str1 = queue.peek();
System.out.println(str1);
System.out.println(queue);
System.out.println("開始遍歷");
for (String e : queue) {
System.out.println(e + " ");
}
while (queue.size() > 0) {
System.out.println(queue.poll() + " ");
}
/**
* java.util.Deque 雙端隊列 兩端都可以進出隊列 雙端隊列接口繼承自隊列接口(Queue)
* boolean offer(E e):將一個對象添加到隊尾,添加成功返回true
* boolean offerFirst(E e):將一個對象添加到隊首,添加成功返回true boolean offerLast(E e):將一個對象添加到隊尾,添加成功返回true
*
* E poll():從隊首刪除並返回一個元素 E pollFirst():從隊首刪除並返回一個元素 E
* pollLast():從隊尾刪除並返回一個元素
*
* E peek():返回隊首元素(但是不刪除)
*
*/
Deque<String> deque = new LinkedList<String>();
deque.offer("a");
deque.offer("aa");
deque.offerFirst("b");// 從隊首添加
deque.offerLast("c");// 從隊尾添加
System.out.println(deque);// [b, a, aa, c]
/**
* 如果將Deque限制爲只能從一端進和出,則可以實現 棧(Stack) 入棧:push(offerFirst)
* 出棧:pop(pollFirst) 棧遵循先進後出(FILO)原則
*/
Deque<String> stack = new LinkedList<String>();
stack.push("1");//入棧
stack.push("2");
stack.push("3");
System.out.println("棧:" + stack);// 棧:[3, 2, 1]
while (stack.size() > 0) {
System.out.println(stack.pop());//出棧
}
System.out.println(stack);// []
}
}
java-隊列,雙端隊列、棧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.