日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java中栈和队列的用法 Stack And Queue

發(fā)布時間:2024/10/8 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中栈和队列的用法 Stack And Queue 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java中棧和隊列的用法

棧的實現(xiàn)

使用Java的集合類Stack

  • boolean isEmpty();//判斷當(dāng)前棧是否為空,等價于empty();
  • synchronized E peek();//獲得當(dāng)前棧頂元素
  • Synchronized E pop();//獲得當(dāng)前棧頂元素并刪除
  • E push(E object);//將元素加入棧頂
  • Synchronized int search(Object o);//查找元素在棧中的位置,由棧底向棧頂方向數(shù)
  • import java.util.Stack; public class Solution{public static void main(String[] args){Stack<Integer> sk=new Stack<Integer>();System.out.println(sk.isEmpty());//判斷棧是否為空,truefor(int i=0;i<10;i++){int e=sk.push(i+20);//將元素加入棧頂,并返回棧頂元素System.out.println(i+": "+e);}System.out.println(sk.empty());//判斷棧是否為空,falseSystem.out.println(sk.pop());//返回棧頂元素,并刪除System.out.println(sk.peek());//返回當(dāng)前棧頂元素System.out.println("first:"+sk.search(20));//查找棧中元素的位置System.out.println("last:"+sk.search(29));} }

    借用LinkedList來間接實現(xiàn)Stack

    LinkedList是一個繼承于AbstractSequentialList的雙向鏈表,也可以當(dāng)作堆棧、隊列、雙端隊列來使用

  • 棧方法:push(e); 等效方法:addFirst(e);//向棧頂添加元素
  • 棧方法:pop(); 等效方法:removeFirst();//獲得當(dāng)前棧頂元素,并刪除
  • 棧方法:peek(); 等效方法:peekFirst();//獲得當(dāng)前棧頂元素
  • import java.util.LinkedList; import java.util.Stack; public class Solution{public static void main(String[] args){LinkedList<Integer> sk=new LinkedList<Integer>();System.out.println(sk.isEmpty());//判斷是否為空,true//System.out.println(sk.empty());錯誤,沒有這個方法for(int i=0;i<10;i++){//int e=sk.addFirst(i+20);錯誤,沒有返回值sk.addFirst(i+20);//向棧頂添加元素System.out.println(i+": "+(i+20));}System.out.println("peekFirst:"+sk.peekFirst());System.out.println("removeFirst:"+sk.removeFirst());//獲得棧頂元素并刪除System.out.println("peekFirst:"+sk.peekFirst());//獲得棧頂元素} }

    隊列的實現(xiàn)

    Java中雖然有Queue接口 ,但并沒有給出隊列的實現(xiàn)類,而LinkedList實現(xiàn)了Queue接口。因為LinkedList是雙向鏈表,所以很方便的實現(xiàn)隊列的所有功能。使用Queue時,盡量避免使用Collection的add()和remove()方法,因為add()和remove()方法在失敗時會拋出異常;要使用offer()來加入元素,使用poll()來獲取并刪除元素,可以通過返回值判斷成與否。

    隊列定義:Queue<E> queue=new LinkedList<E>();

  • 隊列方法:offer(e); 等效方法:offer(e) / offerLast(e);//向隊尾添加元素
  • 隊列方法:poll(e); 等效方法:poll(e) / pollFirst(e);//獲取隊首元素并刪除
  • 隊列方法:peek(e); 等效方法:peek(e) / peeFirst(e);//向獲取隊首元素
    • code 1
    import java.util.LinkedList; import java.util.Queue; public class Solution{public static void main(String[] args){Queue<Integer> queue=new LinkedList<Integer>();System.out.println(queue.isEmpty());//判斷是否為空,true//System.out.println(queue.empty());//錯誤,沒有這個方法for(int i=0;i<10;i++){//int e=sk.addFirst(i+20);錯誤,沒有返回值queue.offer(i+20);//向隊尾添加元素System.out.println(i+": "+(i+20));}System.out.println("peekFirst:"+queue.peek());System.out.println("removeFirst:"+queue.poll());//獲得隊首元素并刪除System.out.println("peekFirst:"+queue.peek());//獲得隊首元素} }

    • code 2
    import java.util.LinkedList; import java.util.Queue; public class Solution{public static void main(String[] args){LinkedList<Integer> queue=new LinkedList<Integer>();System.out.println(queue.isEmpty());//判斷是否為空,true//System.out.println(queue.empty());//錯誤,沒有這個方法for(int i=0;i<10;i++){//int e=sk.addFirst(i+20);錯誤,沒有返回值queue.offer(i+20);//向隊尾添加元素System.out.println(i+": "+(i+20));}System.out.println("peekFirst:"+queue.peek());System.out.println("removeFirst:"+queue.poll());//獲得隊首元素并刪除System.out.println("peekFirst:"+queue.peek());//獲得隊首元素} }

    • code 3
    import java.util.LinkedList; import java.util.Queue; public class Solution{public static void main(String[] args){LinkedList<Integer> queue=new LinkedList<Integer>();System.out.println(queue.isEmpty());//判斷是否為空,true//System.out.println(queue.empty());//錯誤,沒有這個方法for(int i=0;i<10;i++){//int e=sk.addFirst(i+20);錯誤,沒有返回值queue.offerLast(i+20);//向隊尾添加元素System.out.println(i+": "+(i+20));}System.out.println("peekFirst:"+queue.peekFirst());System.out.println("removeFirst:"+queue.pollFirst());//獲得隊首元素并刪除System.out.println("peekFirst:"+queue.peekFirst());//獲得隊首元素} }

    總結(jié)

    以上是生活随笔為你收集整理的Java中栈和队列的用法 Stack And Queue的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。