Java Stack與Queue詳解

一、Stack

在這裡插入圖片描述

示例:

package StackPack;

import java.util.Stack;
public class StackDemo {
    public static void main(String[] args) {
        Stack<Integer> stack=new Stack<>();

        for(int i=0;i<10;i++)
        {
            stack.push(i*2);
        }
        //[0, 2, 3, 4, 6, 8, 12, 14, 16, 18]
        System.out.println(stack.peek());  //18
        System.out.println(stack.search(14));  //以1為基數,
        // 返回最近出現位置到棧頂距離,因此為3
        while(!stack.isEmpty())
        {
            System.out.print(stack.pop()+"\t");
        }
        System.out.println();

        System.out.println(stack.search(1));  //找不到,返回-1


    }
}

二、Queue

由於Queue隻是個接口,因此沒有構造方法

在這裡插入圖片描述

從這裡可以看到Queue從Collection中繼承瞭add,remove等方法,但是我們應該盡量使用offer替換add,使用poll來替換remove

使用Queue特有的方法offer,poll的好處是可以通過判斷返回值判斷操作是否成功完成,而add,remove則會在失敗時拋出異常

在這裡插入圖片描述

示例:

package QueuePack;

import java.util.*;
public class QueueDemo {
    public static void main(String[] args) {
        Queue<Integer> queue=new ArrayDeque<>();
        for(int i=0;i<10;i++)
        {
            queue.offer(i*2);
        }

        Iterator<Integer> it=queue.iterator();
        while(it.hasNext())
        {
            System.out.print(it.next()+"\t"); //0	2	4	6	8	10	12	14	16	18
        }
        System.out.println();

        System.out.println(queue.peek()); //0
        System.out.println(queue.poll());  //0,同時隊列變成[2,4,6,8,10,12,14,16,18]
        
    }
}

示例:十進制轉二進制

因為十進制轉二進制是每次模2取餘直到num=0,然後將餘數反轉即可得到轉換的結果,因此可以利用雙向隊列Deque

代碼

package QueuePack;

import java.util.*;
public class QueueDemo {
    public static void main(String[] args) {
        Queue<Integer> queue=new ArrayDeque<>();
        for(int i=0;i<10;i++)
        {
            queue.offer(i*2);
        }

        Iterator<Integer> it=queue.iterator();
        while(it.hasNext())
        {
            System.out.print(it.next()+"\t"); //0	2	4	6	8	10	12	14	16	18
        }
        System.out.println();

        System.out.println(queue.peek()); //0
        System.out.println(queue.poll());  //0,同時隊列變成[2,4,6,8,10,12,14,16,18]
        
    }
}

在這裡插入圖片描述

Queue是單隊列,Deque是雙向隊列,根據需要使用。

PS:此為學習筆記,如有錯誤,請友好指正,感謝。

到此這篇關於Java Stack與Queue詳解的文章就介紹到這瞭,更多相關Java Stack與Queue內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: