设计模式--迭代器模式
类图
源码
AbstractIterator.java 抽象迭代器 package com.iterator; public abstract class AbstractIterator { //抽象迭代器类 //移到下一个元素 public abstract void next(); //移到上一个元素 public abstract void previous(); //获取上一个元素返回object public abstract Object getPrevious(); //获取下一个元素放回OBJECT public abstract Object getNext(); //是否是第一个元素boolean public abstract boolean isNext(); //是否是最后一个元素 public abstract boolean isFrist(); } ProducteIterator.java package com.iterator; import java.util.ArrayList; import java.util.List; public class ProducteIterator extends AbstractIterator { private List<Object> objectList = new ArrayList<Object>(); private int cursor1; //游标 private int cursor2; //游标2 public ProducteIterator(ConcreteObjectList obj) { // TODO Auto-generated constructor stub this.objectList=obj.getObjectList(); cursor1=0; cursor2=objectList.size()-1; } @Override public void next() { // TODO Auto-generated method stub if(cursor1<objectList.size()) { cursor1++; } } @Override public void previous() { // TODO Auto-generated method stub if(cursor2>-1) { cursor2--; } } @Override public Object getPrevious() { // TODO Auto-generated method stub return objectList.get(cursor2); } @Override public Object getNext() { // TODO Auto-generated method stub return objectList.get(cursor1); } @Override public boolean isNext() { // TODO Auto-generated method stub return (cursor1==objectList.size()); } @Override public boolean isFrist() { // TODO Auto-generated method stub return (cursor2==-1); } } AbstractObjectList.java 抽象聚合对象 package com.iterator; import java.util.*; public abstract class AbstractObjectList { //创建一个object 的arraylist集合 protected List<Object> objectList = new ArrayList<Object>(); public AbstractObjectList(List<Object> list) { // TODO Auto-generated constructor stub this.objectList=list; } //添加方法。 public void AddObject(Object o) { this.objectList.add(o); } //删除方法。 public void RemoveObject(Object o) { this.objectList.remove(o); } //获取到list public List<Object> getObjectList(){ return objectList; } //获取arrayList //获取迭代器的工厂方法 public abstract AbstractIterator createIterator(); } ConcreteObjectList.java 具体聚合对象 package com.iterator; import java.util.*; public abstract class AbstractObjectList { //创建一个object 的arraylist集合 protected List<Object> objectList = new ArrayList<Object>(); public AbstractObjectList(List<Object> list) { // TODO Auto-generated constructor stub this.objectList=list; } //添加方法。 public void AddObject(Object o) { this.objectList.add(o); } //删除方法。 public void RemoveObject(Object o) { this.objectList.remove(o); } //获取到list public List<Object> getObjectList(){ return objectList; } //获取arrayList //获取迭代器的工厂方法 public abstract AbstractIterator createIterator(); } Client.java 测试类 package com.iterator; import java.util.ArrayList; import java.util.List; public class Client { public static void main(String[] args) { List<Object> list1 =new ArrayList<Object>(); AbstractObjectList list = new ConcreteObjectList(list1); list.AddObject("20193901"); list.AddObject("20193902"); list.AddObject("20193903"); list.AddObject("20193904"); list.AddObject("20193905"); list.AddObject("20193906"); list.AddObject("20193907"); list.AddObject("20193908"); list.AddObject("20193909"); list.AddObject("20193910"); list.AddObject("20193911"); list.AddObject("20193912"); AbstractIterator iterator =list.createIterator(); System.out.println("正向遍历"); while(!iterator.isNext()) { System.out.print(iterator.getNext()+"\n"); iterator.next(); } //反向遍历 System.out.println("反向遍历"); while(!iterator.isFrist()) { System.out.print(iterator.getPrevious()+"\n"); iterator.previous(); } } }
测试截图
__EOF__

本文作者:往心。
本文链接:https://www.cnblogs.com/lx06/p/15688547.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/lx06/p/15688547.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
2020-12-14 jsp标签问题