java-Enumeration,单向队列Queue及双向队列Deque等容器简单使用

时间:2021-12-06 17:37:14

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 }

 

效果截图:

java-Enumeration,单向队列Queue及双向队列Deque等容器简单使用

 

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 }

效果截图:

java-Enumeration,单向队列Queue及双向队列Deque等容器简单使用

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 }

效果截图:

java-Enumeration,单向队列Queue及双向队列Deque等容器简单使用