当前位置: 首页 > news >正文

厦门网站建设那家好昆明云南微网站建设

厦门网站建设那家好,昆明云南微网站建设,wordpress绑定域名,教务管理系统入口简介 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部实现。(Java中使用最多的设计模式之一) UML图 应用场景 Java的集合对象:Collection、List、Map、Set等都有迭代器Java ArrayList的迭代器源码 示例 简…

简介

提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部实现。(Java中使用最多的设计模式之一)

UML图

在这里插入图片描述

应用场景
  • Java的集合对象:Collection、List、Map、Set等都有迭代器
  • Java ArrayList的迭代器源码
    在这里插入图片描述

示例

简单实现集合中的迭代器功能

  1. Iterator:
public interface Iterator {/*** 是否有下个元素** @return*/boolean hasNext();/*** 当前元素** @return*/Object next();/*** 删除元素** @param obj*/void remove(Object obj);
}
public class ListIterator implements Iterator {private List list;/*** 索引*/private int index = 0;public ListIterator(List list) {this.list = list;}@Overridepublic boolean hasNext() {return index != list.size();}@Overridepublic Object next() {Object obj = null;if (hasNext()) {obj = list.get(index);index++;}return obj;}@Overridepublic void remove(Object obj) {list.remove(obj);}
}
  1. Aggregate:
public interface ICollection {/*** 添加元素** @param obj*/void add(Object obj);/*** 删除元素** @param obj*/void remove(Object obj);/*** 迭代元素** @return*/Iterator iterator();
}
public class ListCollection implements ICollection {private List list = new ArrayList();@Overridepublic void add(Object obj) {list.add(obj);}@Overridepublic void remove(Object obj) {list.remove(obj);}@Overridepublic Iterator iterator() {return new ListIterator(list);}
}

3.运行

public class Main {public static void main(String[] args) {ListCollection listCollection = new ListCollection();listCollection.add("aaaaaa");listCollection.add("bbbbbb");listCollection.add("cccccc");listCollection.add("dddddd");// 创建迭代器Iterator iterator = listCollection.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}}
}

在这里插入图片描述

总结

  • 优点

    • 可以不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据
    • 支持以不同的方式遍历一个聚合对象
  • 缺点

    • 对于比较简单的遍历如数组、有序列表,该方式实现比较繁琐
    • 在遍历的同时更改迭代器所在的集合结构会导致异常
http://www.yayakq.cn/news/556416/

相关文章:

  • 住建部网站资质查询中宏建设集团中国建设银行培训网站
  • 服装网站开发方案宁波全网营销型网站建设
  • 网站如何做谷歌推广如何建立一个小程序
  • 专注河南网站建设中文企业网站模板
  • 品牌网站设计网站维护工作是做啥
  • 给朋友做的相册网站没有了遵义公共资源交易中心官网
  • 网站开发与设计期末考试做logo设计的网站
  • 郑州中原区建设局网站免费的国外服务器
  • 山东省住房和城乡建设局网站贝壳找房房源
  • 外贸网站如何换域名青岛城乡建设局网站首页
  • 制作企业网站平台成都建设网站平台
  • 交友类网站功能建设思路腾讯云服务器app
  • php手机网站最大免费广告发布平台
  • 网站集约化建设需求如何做汽车的创意视频网站设计
  • sql网站的发布流程android移动应用开发
  • 房建设计网站蓝气球卡地亚手表官方网站
  • 百度指数批量获取郑州seo公司排名
  • 什么是网络营网络营销的特点做网站排名优化是怎么回事
  • 哪些网站可以做房产推广c2c电子商务平台有哪些
  • 南昌网站搜索排名用户网站建设
  • 企业网站推广是不是必要的网络营销案例分析与实践
  • 旅游网站开发设计毕设论文上海专业制作网页
  • 做微信推送用什么网站网站建设 主要内容
  • 安康网站建设公司广播电台网站建设板块
  • 苏州网站开发公司招聘信息滕州网站建设培训
  • 医疗整形网站怎么做网站建设的流程图
  • 各类设计型网站周到的宁波网站建设
  • 彩票网站怎么做收银怎么建设自己收费网站
  • 乐云seo网站建设公司深圳app网站设计
  • 长江商学院 网站建设北京简网世纪科技有限公司