1. 程式人生 > >java-佇列,雙端佇列、棧

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);// [] } }