不多說,我們直接看源代碼
1.package collection.lession10;
2.
3.import java.util.Arrays;
4.import java.util.List;
5.import java.util.Stack;
6.
7./**
8. * 老紫竹JAVA提高教程(10)-認識List列表之Stack<br>
9. * 實現了LIFO的對象堆棧,<br>
10. * 類本身繼承自Vector,擴展了一些方法<br>
11. * <br>
12. * 推薦使用 JDK 6 開始提供的 Deque 接口實現堆棧操作 <br>
13. * <br>
14. * 相關API請查看 api.java2000.net/Stack
15. *
16. * @author 老紫竹 JAVA世紀網(java2000.net)
17. *
18. */19.public class Lession10 {
20.
21. public static void main(String[] args) {
22. // 由於Stack 繼承自Vector,所以Vector的各種方法這裡就不介紹了
23. // 請自行參考Vector對應的教程
24.
25. // 創建一個空堆棧
26. Stack stack = new Stack();
27. showList(stack);
28.
29. // 檢查堆棧是否為空
30. System.out.println("empty=" + stack.empty());
31.
32. // 我們把數據壓入堆棧
33. stack.push(123);
34. stack.push("xyz");
35. showList(stack);
36.
37. // 檢查堆棧是否為空
38. System.out.println("empty=" + stack.empty());
39.
40. // 再次壓入數據
41. stack.push(456);
42. stack.push("xyz"); // 注意這個xyz與前面的一個數據重復
43. showList(stack);
44.
45. // 我們查看一下堆棧的第一個數據
46. // 注意此peek操作並不移除數據,其仍在堆棧中
47. System.out.println("first=" + stack.peek());
48.
49. // 下面我們搜索一下某個對象的位置
50. System.out.println("123=" + stack.search(123));
51. System.out.println("xyz=" + stack.search("xyz"));
52.
53. // 我們從堆棧中彈出輸出
54. while (!stack.empty()) {
55. System.out.println("pop=" + stack.pop());
56. }
57. }
58.
59. /**
60. * 顯示List裡面的數據。
61. *
62. * @param list
63. */
64. private static void showList(List list) {
65. System.out.println(Arrays.toString(list.toArray()));
66. }
67.}
68.
堆棧在一般的應用中並不常見,大多和算法有關的時候才會使用。它屬於後進先出的 LIFO的機制。push和pop是其標志性操作。
在匯編語言裡面,對於堆棧的操作也是
PUSH AX
POP AX
對於List的介紹,我們就到此告一段落。