java-隊列,雙端隊列、棧

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);// []
    }
}
發佈了155 篇原創文章 · 獲贊 37 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章