• 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 }

    效果截图:

  • 相关阅读:
    tp5.前端模板注释
    站在历史天空下的幻想——高考感怀七十二韵
    公交查询
    模糊查询
    ibox 的使用
    tabs 导航 及内容切换
    c#ADO.NET 执行带参数及有返回数据
    Sql Server中变的定义以及赋值的应用
    EF的3种开发模式
    php7.1.30 下微信公众号问题
  • 原文地址:https://www.cnblogs.com/weekstart/p/10779964.html
Copyright © 2020-2023  润新知