做粘土网站,有没有学做衣服的网站,做网站需要哪些资质,网站创建设计SEO优化象客简介 提供一种方法顺序访问一个聚合对象中各个元素#xff0c;而又不暴露该对象的内部实现。#xff08;Java中使用最多的设计模式之一#xff09; UML图 应用场景
Java的集合对象#xff1a;Collection、List、Map、Set等都有迭代器Java ArrayList的迭代器源码
示例 简…简介 提供一种方法顺序访问一个聚合对象中各个元素而又不暴露该对象的内部实现。Java中使用最多的设计模式之一 UML图 应用场景
Java的集合对象Collection、List、Map、Set等都有迭代器Java ArrayList的迭代器源码
示例 简单实现集合中的迭代器功能 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);}
}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());}}
}总结 优点 可以不暴露集合的内部结构又可让外部代码透明地访问集合内部的数据支持以不同的方式遍历一个聚合对象 缺点 对于比较简单的遍历如数组、有序列表该方式实现比较繁琐在遍历的同时更改迭代器所在的集合结构会导致异常