生活随笔
收集整理的這篇文章主要介紹了
Java中栈和队列的用法 Stack And Queue
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java中棧和隊列的用法
棧的實現
使用Java的集合類Stack
boolean isEmpty();//判斷當前棧是否為空,等價于empty();synchronized E peek();//獲得當前棧頂元素Synchronized E pop();//獲得當前棧頂元素并刪除E push(E object);//將元素加入棧頂Synchronized int search(Object o);//查找元素在棧中的位置,由棧底向棧頂方向數
import java
.util
.Stack
;
public class Solution{public static void main(String
[] args
){Stack
<Integer> sk
=new Stack<Integer>();System
.out
.println(sk
.isEmpty());for(int i
=0;i
<10;i
++){int e
=sk
.push(i
+20);System
.out
.println(i
+": "+e
);}System
.out
.println(sk
.empty());System
.out
.println(sk
.pop());System
.out
.println(sk
.peek());System
.out
.println("first:"+sk
.search(20));System
.out
.println("last:"+sk
.search(29));}
}
借用LinkedList來間接實現Stack
LinkedList是一個繼承于AbstractSequentialList的雙向鏈表,也可以當作堆棧、隊列、雙端隊列來使用
棧方法:push(e); 等效方法:addFirst(e);//向棧頂添加元素棧方法:pop(); 等效方法:removeFirst();//獲得當前棧頂元素,并刪除棧方法:peek(); 等效方法:peekFirst();//獲得當前棧頂元素
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());for(int i
=0;i
<10;i
++){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());}
}
隊列的實現
Java中雖然有Queue接口 ,但并沒有給出隊列的實現類,而LinkedList實現了Queue接口。因為LinkedList是雙向鏈表,所以很方便的實現隊列的所有功能。使用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);//向獲取隊首元素
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());for(int i
=0;i
<10;i
++){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());}
}
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());for(int i
=0;i
<10;i
++){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());}
}
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());for(int i
=0;i
<10;i
++){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());}
}
總結
以上是生活随笔為你收集整理的Java中栈和队列的用法 Stack And Queue的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。