《Java设计模式之迭代器模式》
来源:互联网 发布:php require once use 编辑:程序博客网 时间:2024/06/13 22:20
《迭代器模式》
Java中所有Collection下的集合都有一个iterator()方法返回Iterator接口的实现类,用于对该集合的遍历操作,这实际上就使用到了迭代器模式:提供一个方法顺序访问一个聚合对象的每一个元素,而有不暴露该对象的内部实现。
迭代模式的结构:
用代码模拟一下迭代器模式:
//抽象迭代器public interface MyIterator {boolean hasNext();Object next();}
//抽象容器public interface MyList {MyIterator createIterator();void add(Object obj);Object get();}
//具体容器public class ConcreteMyList implements MyList {private List<Object> list = new ArrayList<>();@Overridepublic MyIterator createIterator() {return new ConcreteMyIterator(list);}@Overridepublic void add(Object obj) {list.add(obj);}@Overridepublic Object get() {return createIterator().next();}}
//具体迭代器public class ConcreteMyIterator implements MyIterator {private List<Object> list;private int pointer;public ConcreteMyIterator(List<Object> list) {this.list = list;}@Overridepublic boolean hasNext() {if (pointer < list.size()){return true;}return false;}@Overridepublic Object next() {Object obj = list.get(pointer); pointer++;return obj;}}
//测试public static void main(String[] args) {ConcreteMyList list = new ConcreteMyList();list.add(1);list.add(2);list.add(3);MyIterator iterator = list.createIterator();while(iterator.hasNext()){System.out.println(iterator.next());}}
总结
迭代器的优点:
1.提供了非常简单的遍历方法,客户端无需知道容器的内部结构,通过迭代器就可以轻易的获取元素
2.可以提供多种遍历方式,如正序或者倒序。
因为Java已经为每一个集合设计好了迭代器,所以我们在使用时往往感觉不到迭代器模式的存在,而且在Java5之后,又有了Iterable接口,使得集合和数组的遍历更加方便。
阅读全文
0 0
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- JAVA-设计模式之迭代器模式
- Java设计模式笔记之迭代器模式
- Java设计模式泛型化之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- After RAC ONE NODE Failover and relocate ,instance_number 和 oracle_sid changes
- 编写第一个基于 mybaits测试实例
- androidexternal目录下新增一个可执行应用及编译
- springboot【6】web开发之异常处理
- Unity自定义UI组件(四)双击按钮、长按按钮
- 《Java设计模式之迭代器模式》
- Android Studio AVD更改路径后,无法启动
- HTTP协议详解
- 发现类似这样的错误,view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy
- IOS开发入门----Objective-C入门(1)(2017/8/1)
- Unity自定义组件之(五) 目录树 UITree
- Android RecyclerView用法
- shell脚本ping网段代码
- poj 3040 Allowance