java-Enumeration,单向队列Queue及双向队列Deque等容器简单使用
1.Enumeration容器使用:
package com.etc; import java.util.Enumeration;
import java.util.Vector; /*
Enumeration容器的使用,类似于Iterator迭代器,同样用于获取数据
判断是否存在下一个元素:hasMoreElements()
获取下一个元素:nextElement()
需要借助Vector的elements()方法
Vector的线程较为安全,但是存储效率不高
*/
public class TestEnumerationDemo { public static void main(String[] args) {
Vector<String> v=new Vector<String>();
v.add("java");
v.add("python");
v.add("c++");
//类似于迭代器的使用
Enumeration<String> em=v.elements();
while(em.hasMoreElements()) {
System.out.println(em.nextElement()+" ");
}
}
}
效果截图:
2.单向队列Queue简单使用:
package com.etc;
import java.util.ArrayDeque;
import java.util.Queue;
/*
利用单向队列模拟银行存款业务,先进先出
*/
public class TestQueueDemo1 {
public static void main(String[] args) {
//构建que队列容器:实现先进先出
Queue<Request> que=new ArrayDeque<Request>();
//利用循环简单实现10个人存款的情况
for(int i=0;i<10;i++) {
final int num=i;
que.offer(new Request() {
@Override
public void Deposite() {
System.out.println("第"+num+"个人正在办理存款业务。");
}
});
}
dealWith(que);
} public static void dealWith(Queue<Request> que) {
Request req=null;
while(null!=(req=que.poll())) {
//处理业务
req.Deposite();
}
}
} //定义一个接口用于实现银行业务
interface Request{
//存款业务
void Deposite();
}
效果截图:
3.双向队列Deque简单使用:
package com.etc; import java.util.ArrayDeque;
import java.util.Deque;
//利用双向队列实现自定义容器栈方法实现
public class TestQueueDemo2<E> {
//定义一个容器
private Deque<E> include=new ArrayDeque<E>();
//设置容量
private int size;
//构造器
public TestQueueDemo2(int size) {
super();
this.size=size;
} //利用队列的特点实现栈的压栈
public boolean push(E e) {
//如果容器的大小比自身的容量小
if(include.size()+1>size) {
return false;
}
/*将后一个的值压入栈中成功
offerLast(E e);相当于压入队列的尾部然后返回true*/
return include.offerLast(e);
}
//弹栈,将最后一个元素拿出来
public E pop() {
return include.pollLast();
}
//获取压入栈中的最后一个元素
public E peek() {
return include.peekLast();
}
//获取当前栈容量
public int size() {
return this.include.size();
} }
package com.etc; public class Demo2Test { public static void main(String[] args) {
//自定义栈初始化
TestQueueDemo2<String> str=new TestQueueDemo2<String>(5);
//栈头端压入数据
str.push("first");
str.push("second");
str.push("third");
System.out.println(str.size());
//遍历
String item=null;
while(null!=(item=str.pop())) {
System.out.println(item);
} } }
效果截图:
java-Enumeration,单向队列Queue及双向队列Deque等容器简单使用的更多相关文章
- Java中的队列Queue,优先级队列PriorityQueue
队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...
- java队列Queue及阻塞队列
java队列 接口Queue类在java.util包,定义了以下6个方法 详细查看官方文档https://docs.oracle.com/javase/7/docs/api/java/util/Que ...
- 映射Map、队列Queue、优先级队列PriorityQueue
映射Map 将对象映射到其他对象的能力是解决编程问题的有效方法.例如,考虑一个程序,它被用来检查 Java 的 Random 类的随机性.理想情况下, Random 会产生完美的数字分布,但为了测试这 ...
- Python与数据结构[2] -> 队列/Queue[0] -> 数组队列的 Python 实现
队列 / Queue 数组队列 数组队列是队列基于数组的一种实现,其实现类似于数组栈,是一种FIFO的线性数据结构. Queue: <--| 1 | 2 | 3 | 4 | 5 |<-- ...
- python队列queue 之优先级队列
import queue as Q def PriorityQueue_int(): que = Q.PriorityQueue() que.put(10) que.put(1) que.put(5) ...
- C#队列Queue,利用队列处理订单
一.什么是队列 队列(Queue)代表了一个先进先出的对象集合.当您需要对各项进行先进先出的访问时,则使用队列.当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队. 这是摘抄网上的.做了 ...
- Python生产者producer和consumer消费者案例写法,含有多线程,包含队列queue、JoinableQueue队列的用法
import timeimport random import queuefrom multiprocessing import Process,Queue 案例一:def consumer(q,na ...
- Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)
Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 im ...
- 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)
Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuq ...
随机推荐
- angular.js学习笔记(一)
1.angular单项数据绑定 2.不要使用控制器的时候: 任何形式的DOM操作:控制器只应该包含业务逻辑.DOM操作则属于应用程序的表现层逻辑操作,向来以测试难度之高闻名于业界.把任何表现层的逻辑放 ...
- Javascript高级编程学习笔记(86)—— Canvas(3)绘制矩形
绘制矩形 矩形是唯一一种可以直接在2D上下文中绘制的形状. 与矩形有关的方法包括: fillRect() strokeRect() clearRect() 上述方法都接收四个参数: 绘制矩形的 X 坐 ...
- [Swift]LeetCode28. 实现strStr() | Implement strStr()
Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle ...
- [Java]LeetCode278. 第一个错误的版本 | First Bad Version
You are a product manager and currently leading a team to develop a new product. Unfortunately, the ...
- 9.Django form组件
Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 创建Form类时,主要涉及到 [ ...
- GitHub 1W star 成就达成!
起因 感谢各位大佬的支持收获了人生第一个(很有可能也是唯一一个)1W star 项目. 从今年一月份创建项目至今 8 个月时间. 一共关闭了 27 个 issue,47 个 RP,总共有 11 位小伙 ...
- java代码之美(7)---guava之Bimap
guava之Bimap bimap的作用很清晰:它是一个一一映射,可以通过key得到value,也可以通过value得到key. 一.概述 1.bimap和普通HashMap区别 (1)在Java集合 ...
- [八]基础数据类型之Double详解
Double 基本数据类型double 的包装类 Double 类型的对象包含一个 double 类型的字段 属性简介 用来以二进制补码形式表示 double 值的比特位数 public sta ...
- .NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码
前言 上一篇博客中我们可以得知通过Swagger插件可以很方便的提供给接口开发者在线调试,但是实际上Swagger附带的功能还有很多, 比如使用NSwag生成客户端调用代码,进一步解放接口开发者. N ...
- python基础1--安装、package、数据类型
1.下载python 下载地址https://www.python.org/downloads/ 2.Package以及数据类型 自带package和外部package 自带package举例: os ...