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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java集合类——Stack栈类与Queue队列

發布時間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java集合类——Stack栈类与Queue队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今日走讀代碼時,遇到stack棧類,特查看java的API文檔,總結如下:

Stack繼承Vector類,它通過五個操作對類 Vector 進行了擴展。 棧是 后進先出的。 棧提供了通常的 push 和 pop 操作,以及取堆棧頂點的 peek 方法、測試堆棧是否為空的 empty 方法、在堆棧中查找項并確定到堆棧頂距離的 search 方法。

?

方法摘要
?booleanempty()
??????????測試堆棧是否為空。
?Epeek()
??????????查看堆棧頂部的對象,但不從堆棧中移除它。
?Epop()
??????????移除堆棧頂部的對象,并作為此函數的值返回該對象。
?Epush(E?item)
??????????把項壓入堆棧頂部。
?intsearch(Object?o)
??????????返回對象在堆棧中的位置,以 1 為基數。

現附上例子,后續繼續總結

/*** @作者 whs* @創建日期 2015年2月4日* @版本 V 1.0*/ package thread.pool;import java.util.Stack;public class StackExam {public static void main(String[] args) {Stack<String> stack = new Stack<String>();System.out.println("now the satck is "+isEmpty(stack));stack.push("1");stack.push("2");stack.push("3");stack.push("4");stack.push("5");stack.push("6");System.out.println("now the stack is "+isEmpty(stack));System.out.println(stack.peek());//查看堆棧頂部的對象,并返回該對象,但不從堆棧中移除它。System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.search("3"));//,此方法返回最近的目標對象距堆棧頂部出現位置到堆棧頂部的距離;}public static String isEmpty(Stack<String> stack){return stack.empty() ? "empty":"not empty";} }

?輸出為:

now the satck is empty now the stack is not empty 6 6 5 2

接口 Queue隊列:

??? Queue接口與List、Set同一級別,都是繼承了Collection接口。LinkedList實現了Queue接 口。Queue接口窄化了對LinkedList的方法的訪問權限(即在方法中的參數類型如果是Queue時,就完全只能訪問Queue接口所定義的方法 了,而不能直接訪問 LinkedList的非Queue的方法),以使得只有恰當的方法才可以使用。BlockingQueue 繼承了Queue接口。

????? 隊列通常(但并非一定)以 FIFO(先進先出)的方式排序各個元素。不過優先級隊列和 LIFO 隊列(或堆棧)例外,前者根據提供的比較器或元素的自然順序對元素進行排序,后者按 LIFO(后進先出)的方式對元素進行排序。無論使用哪種排序方式,隊列的頭 都是調用 remove() 或 poll() 所移除的元素。在 FIFO 隊列中,所有的新元素都插入隊列的末尾。其他種類的隊列可能使用不同的元素放置規則。每個 Queue 實現必須指定其順序屬性。

方法摘要
?booleanadd(E?e)
??????????將指定的元素插入此隊列(如果立即可行且不會違反容量限制),在成功時返回 true,如果當前沒有可用的空間,則拋出 IllegalStateException。
?Eelement()
??????????獲取,但是不移除此隊列的頭。
?booleanoffer(E?e)
??????????將指定的元素插入此隊列(如果立即可行且不會違反容量限制),當使用有容量限制的隊列時,此方法通常要優于 add(E),后者可能無法插入元素,而只是拋出一個異常。
?Epeek()
??????????獲取但不移除此隊列的頭;如果此隊列為空,則返回 null。
?Epoll()
??????????獲取并移除此隊列的頭,如果此隊列為空,則返回 null。
?Eremove()
??????????獲取并移除此隊列的頭。

?????? Queue使用時要盡量避免Collection的add()和remove()方法,而是要使用offer()來加入元素,使用poll()來獲取并移出元素。它們的優點是通過返回值可以判斷成功與否,add()和remove()方法在失敗的時候會拋出異常。 如果要使用前端而不移出該元素,使用element()或者peek()方法。

?????? 注意:poll和peek方法出錯進返回null。因此,向隊列中插入null值是不合法的。

例子:

Queue<String> queue=new LinkedList<String>();queue.offer("Hello");queue.offer("World!");queue.offer("你好?");System.out.println(queue.size());for(String str:queue){System.out.printf(str + " ");}System.out.printf("\n");System.out.println(queue.size()); String str;while((str=queue.poll()) != null){System.out.printf(str + " ");}System.out.println();System.out.println(queue.size());

?輸出結果:

3 Hello World ! 你好? 3 Hello World ! 你好? 0

?

轉載于:https://www.cnblogs.com/whsa/p/4272717.html

總結

以上是生活随笔為你收集整理的java集合类——Stack栈类与Queue队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。