设计模式02迭代器(java)
先贴代码,有空来写内容。
1.定义集合
import java.util.List;
import java.util.ArrayList;
//coollection是我自己定义的一个集合,因为要写迭代器,得有个迭代的对象啊。
class coollection<Object>{
//coollection的数据存储在一个ArrayList里
private List<Object> data = new ArrayList<Object>();
//index用于记录当前将迭代元素的下标
private int index = 0;
//给集合添加元素
public void add(Object o){
data.add(o);
}
//获取index
public int getCurrent(){
return index;
}
//获取集合规模
public int size(){
return data.size();
}
//获取一个元素并将索引指向下一个元素
public Object get(){
return data.get(index++);
}
//删除已经被迭代的最后一个元素
public void remove(){
if(index != 0)
data.remove(index-1);
}
//获取coollection的迭代器
public iterator getiterator(){
index = 0;
return new coollectionItrator(this);
}
}
2.写迭代器
//迭代器接口,所有迭代器都要实现这个接口的所有功能
interface iterator{
public boolean hasNext();
public Object next();
public void remove();
}
//coollection集合的专属迭代器,实现了iterator
class coollectionItrator implements iterator{
//定义该迭代器要操作的集合 dataSrc
coollection<Object> dataSrc;
//初始化集合
public coollectionItrator(coollection c){
dataSrc = c;
}
//重写hasNext()
@Override
public boolean hasNext(){
return dataSrc.size() > dataSrc.getCurrent();
}
//重写next()
@Override
public Object next(){
return dataSrc.get();
}
//重写remove()
@Override
public void remove(){
dataSrc.remove();
}
}
3.测试迭代器
// 测试迭代器
public class iteratorDemo{
public static void main(String[] args){
//new 一个集合,将三个实例放进集合里
coollection<Student> stu = new coollection<Student>();
stu.add(new Student("singleDog","man","18"));
stu.add(new Student("singleDoge","feman","19"));
stu.add(new Student("0.0","feman","20")); //获取集合stu的迭代器
iterator it = stu.getiterator();
//遍历集合并输出元素
while(it.hasNext()){
System.out.println(it.next());
}
// 测试迭代器的remove功能
it.remove();
System.out.println("删除后:");
it = stu.getiterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
设计模式02迭代器(java)的更多相关文章
- 23种设计模式全解析 (java版本)
转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...
- Python进阶:设计模式之迭代器模式
在软件开发领域中,人们经常会用到这一个概念——“设计模式”(design pattern),它是一种针对软件设计的共性问题而提出的解决方案.在一本圣经级的书籍<设计模式:可复用面向对象软件的基础 ...
- 设计模式学习--迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)
设计模式学习--迭代器模式(Iterator Pattern) 概述 ——————————————————————————————————————————————————— 迭代器模式提供一种方法顺序 ...
- 实践GoF的设计模式:迭代器模式
摘要:迭代器模式主要用在访问对象集合的场景,能够向客户端隐藏集合的实现细节. 本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:迭代器模式>,作者:元闰子. 简介 有时会遇到这 ...
- 从设计模式说起JAVA I/O流
从设计模式说起JAVA I/O流 之前写过一篇I/O流的入门介绍,直到最近看了设计模式,顺带理下I/O流的设计思路. JAVA类库中的I/O类分成输入和输出两部分,通过继承,任何自InputStrea ...
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
原文:乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 作者:weba ...
- python设计模式之迭代器与生成器详解(五)
前言 迭代器是设计模式中的一种行为模式,它提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示.python提倡使用生成器,生成器也是迭代器的一种. 系列文章 python设计模 ...
- iOS设计模式(02):单例模式
iOS设计模式(02):单例模式 singleton-design-pattern 什么是单例模式? 单例模式是一个类在系统中只有一个实例对象.通过全局的一个入口点对这个实例对象进行访问.在iOS开发 ...
- js设计模式——4.迭代器模式
js设计模式——4.迭代器模式 代码演示 /*js设计模式——迭代器模式*/ class Iterator { constructor(container) { this.list = contain ...
随机推荐
- NSStringCompareOptions
typedefNS_OPTIONS(NSUInteger, NSStringCompareOptions) { NSCaseInsensitiveSearch = 1, //不区分大小写比较 N ...
- A*算法应用[转]
转自:http://www.cnblogs.com/zhoug2020/p/3468167.html 这是一篇十分精彩/易懂的博客,感谢原博主!本文通过自己的理解在原博文基础上突出一些重点字眼,句子. ...
- 跟着老男孩教育学Python开发【第五篇】:模块
递归的案例:阶乘 1*2*3*4*5*6*7- def func(num): if num == 1: return 1 return num * func(num - ...
- Linux 利用Google Authenticator实现ssh登录双因素认证
1.介绍 双因素认证:双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统.双因素认证是一种采用时间同步技术的系统,采用了基于时间.事件和密钥三变量而产生的一 ...
- 【腾讯Bugly干货分享】聊聊苹果的Bug - iOS 10 nano_free Crash
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/hnwj24xqrtOhcjEt_TaQ9w 作者:张 ...
- Joshua Bloch错了? ——适当改变你的Builder模式实现
注:这一系列都是小品文.它们偏重的并不是如何实现模式,而是一系列在模式实现,使用等众多方面绝对值得思考的问题.如果您仅仅希望知道一个模式该如何实现,那么整个系列都会让您失望.如果您希望更深入地了解各个 ...
- Spring6:基于注解的Spring MVC(上篇)
什么是Spring MVC Spring MVC框架是一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...
- CSharpGL(27)讲讲清楚OpenGL坐标变换
CSharpGL(27)讲讲清楚OpenGL坐标变换 在理解OpenGL的坐标变换问题的路上,有好几个难点和易错点.且OpenGL秉持着程序难以调试.难点互相纠缠的特色,更让人迷惑.本文依序整理出关于 ...
- ABP框架 - 设置管理
文档目录 本节内容: 简介 关于ISettingStore 定义设置 setting scope(设置范围) 重写设置定义 获取设置值 服务端 客户端 修改设置 关于缓存 简介 每个应用必需存储一些设 ...
- MySql免安装版安装配置,附MySQL服务无法启动解决方案
文首提要: 我下载的MySQL版本是:mysql-5.7.17-winx64.zip Archive版:系统:Windows7 64位. 一.解压文件 下载好My ...