JAVA学习笔记43——其他容器简介1:Queue+Deque+Enumeration

来源:互联网 发布:arm linux gcc 是什么 编辑:程序博客网 时间:2024/06/16 20:36

最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。

本篇以及接下来几篇将简单介绍几种和List、Map相比不太重要的容器,本篇介绍的是Queue、Deque、Enumeration。


下面是实例代码:

NO.1:Deque的应用

import java.util.ArrayDeque;import java.util.Queue;/** * 使用队列模拟银行存款业务 */public class Demo01 {public static void main(String[] args) {Queue<Request> que =new ArrayDeque<Request>();//模拟排队情况for(int i=0;i<10;i++){final int num =i;que.offer(new Request(){@Overridepublic void deposit() {System.out.println("第"+num+"个人,办理存款业务,存款额度为:"+(Math.random()*10000));}});}dealWith(que);}//处理业务public static void dealWith(Queue<Request> que){Request req =null;while(null!=(req=que.poll())){req.deposit();}}}interface Request{//存款void deposit();}
NO.2:模拟堆栈以及应用:

import java.util.ArrayDeque;import java.util.Deque;/** * 使用队列实现自定义堆栈 * 1、弹 * 2、压 * 3、获取头 * @param <E> */public class MyStack<E> {//容器private Deque<E> container =new ArrayDeque<E>();//定义容量private int cap;public MyStack(int cap) {super();this.cap = cap;}//压栈public boolean push(E e){if(container.size()+1>cap){return false;}return container.offerLast(e);}//弹栈public E pop(){return container.pollLast();}//获取public E peek(){return container.peekLast();}public int size(){return this.container.size();}}
//测试自定义堆栈public class Demo02 {public static void main(String[] args) {MyStack<String> backHistory =new MyStack<String>(3);backHistory.push("www.baidu.com");backHistory.push("www.google.com");backHistory.push("www.sina.com");backHistory.push("www.bjsxt.cn");System.out.println("大小:"+backHistory.size());//遍历String item=null;while(null!=(item=backHistory.pop())){System.out.println(item);}}}
接下来介绍的是Enmeration接口,它是一个比较古老的接口,作用和Iterator类似,都是输出数据,在JDK5.0之前广泛使用,现在基本上被迭代器取代,但是在维护性的工作中也比较频繁地被使用,接口里面只提供两个抽象方法:hasMoreElements()nextElement(),主要的应用一是获取Vector :elements()的返回元素并逐条输出,二是其子类StringTokenizer的分割操作:

示例代码:

import java.util.Enumeration;import java.util.Vector;/** * Enumeration 的使用 * 1、判断  hasMoreElements() * 2、获取 nextElement() * Vector 的 elements()方法 */public class Demo01 {public static void main(String[] args) {Vector<String> vector =new Vector<String>();vector.add("javase");vector.add("html");vector.add("oracle");//遍历该VectorEnumeration<String> en =vector.elements();while(en.hasMoreElements()){System.out.println(en.nextElement());}}}
import java.util.StringTokenizer;/** * Enumeration 子类:StringTokenizer:String split() 字符串分割 * 不支持正则表达式 * StringTokenizer(String str, String delim)  */public class Demo02 {public static void main(String[] args) {String emailStr="bjsxt@163.com;bjsxt@qq.com;bjsxt@sohu.com";StringTokenizer token =new StringTokenizer(emailStr,";");  //进行分割//遍历获取while(token.hasMoreElements()){System.out.println(token.nextElement());}}}









0 0
原创粉丝点击