java-Enumeration,單向隊列Queue及雙向隊列Deque等容器簡單使用


1.Enumeration容器使用:

 1 package com.etc;
 2 
 3 import java.util.Enumeration;
 4 import java.util.Vector;
 5 
 6 /*
 7  Enumeration容器的使用,類似於Iterator迭代器,同樣用於獲取數據
 8    判斷是否存在下一個元素:hasMoreElements()
 9    獲取下一個元素:nextElement()
10    需要借助Vector的elements()方法
11  Vector的線程較為安全,但是存儲效率不高
12  */
13 public class TestEnumerationDemo {
14     
15     public static void main(String[] args) {
16         Vector<String> v=new Vector<String>();
17         v.add("java");
18         v.add("python");
19         v.add("c++");
20         //類似於迭代器的使用
21         Enumeration<String> em=v.elements();
22         while(em.hasMoreElements()) {
23             System.out.println(em.nextElement()+" ");
24         }
25     }
26 }

效果截圖:

2.單向隊列Queue簡單使用:

 1 package com.etc;
 2 import java.util.ArrayDeque;
 3 import java.util.Queue;
 4 /*
 5   利用單向隊列模擬銀行存款業務,先進先出
 6  */
 7 public class TestQueueDemo1 {
 8     public static void main(String[] args) {
 9         //構建que隊列容器:實現先進先出
10         Queue<Request> que=new ArrayDeque<Request>();
11         //利用循環簡單實現10個人存款的情況
12         for(int i=0;i<10;i++) {
13             final int num=i;
14             que.offer(new Request() {
15                 @Override
16                 public void Deposite() {
17                     System.out.println("第"+num+"個人正在辦理存款業務。");
18                 } 
19             });
20         }
21         dealWith(que);
22     }
23 
24     public static void dealWith(Queue<Request> que) {
25         Request req=null;
26         while(null!=(req=que.poll())) {
27             //處理業務
28             req.Deposite();
29         }
30     }
31 }
32 
33 //定義一個接口用於實現銀行業務
34 interface Request{
35     //存款業務
36     void Deposite();
37 }

效果截圖:

3.雙向隊列Deque簡單使用:

 1 package com.etc;
 2 
 3 import java.util.ArrayDeque;
 4 import java.util.Deque;
 5 //利用雙向隊列實現自定義容器棧方法實現
 6 public class TestQueueDemo2<E> {
 7     //定義一個容器
 8     private Deque<E> include=new ArrayDeque<E>();
 9     //設置容量
10     private int size;
11     //構造器
12     public TestQueueDemo2(int size) {
13         super();
14         this.size=size;
15     }
16 
17     //利用隊列的特點實現棧的壓棧
18     public boolean push(E e) {
19         //如果容器的大小比自身的容量小
20         if(include.size()+1>size) {
21             return false;
22         }
23         /*將后一個的值壓入棧中成功
24         offerLast(E e);相當於壓入隊列的尾部然后返回true*/
25         return include.offerLast(e);
26     }
27     //彈棧,將最后一個元素拿出來
28     public E pop() {
29         return include.pollLast();
30     }
31     //獲取壓入棧中的最后一個元素
32     public E peek() {
33         return include.peekLast();
34     }
35     //獲取當前棧容量
36     public int size() {
37         return this.include.size();
38     }
39 
40 }
 1 package com.etc;
 2 
 3 public class Demo2Test {
 4 
 5     public static void main(String[] args) {
 6         //自定義棧初始化
 7         TestQueueDemo2<String> str=new TestQueueDemo2<String>(5);
 8         //棧頭端壓入數據
 9         str.push("first");
10         str.push("second");
11         str.push("third");
12         System.out.println(str.size());
13         //遍歷
14         String item=null;
15         while(null!=(item=str.pop())) {
16             System.out.println(item);
17         }
18 
19     }
20 
21 }

效果截圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM