TCN时间序列预测实战:Python实现外汇走势建模,对比LSTM
2026/10/17 16:29:58
你在 Java 中几乎每天都会写:
for(Strings:list){System.out.println(s);}或者:
Iterator<String>it=list.iterator();while(it.hasNext()){System.out.println(it.next());}但你是否想过:
ArrayList和HashSet底层结构完全不同答案就是:迭代器模式。
在不暴露集合内部结构的前提下,顺序访问集合元素
提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部表示。
详细解释:迭代器模式提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
一句话理解:
遍历与集合实现解耦。
迭代器模式解决了三个问题:
集合负责存储,迭代器负责遍历。
迭代器模式包含四个角色:
定义访问和遍历聚合元素的接口,通常包含 hasNext()、next() 等方法。
实现抽象迭代器接口中所定义的方法,完成对聚合对象的遍历,记录遍历的当前位置。
定义存储、添加、删除聚合元素以及创建迭代器对象的接口。
实现抽象聚合类,返回一个具体迭代器的实例。
publicinterfaceIterator<E>{booleanhasNext();Enext();}publicinterfaceContainer<E>{Iterator<E>iterator();}publicclassNameRepositoryimplementsContainer<String>{privateString[]names={"Alice","Bob","Charlie"};@OverridepublicIterator<String>iterator(){returnnewNameIterator();}privateclassNameIteratorimplementsIterator<String>{privateintindex;@OverridepublicbooleanhasNext(){returnindex<names.length;}@OverridepublicStringnext(){returnnames[index++];}}}NameRepositoryrepo=newNameRepository();Iterator<String>it=repo.iterator();while(it.hasNext()){System.out.println(it.next());}while(it.hasNext()){process(it.next());}list.stream().forEach(this::process);对比:
| 方式 | 控制权 |
|---|---|
| 外部迭代 | 调用者 |
| 内部迭代 | 集合 |
publicinterfaceIterator<E>{booleanhasNext();Enext();}都通过 Iterator 统一遍历。
迭代器模式不是 for 循环的替代,而是“遍历规则的抽象”。
| 模式 | 关注点 |
|---|---|
| 迭代器 | 如何遍历 |
| 访问者 | 如何操作 |
迭代器模式 | 菜鸟教程
《图解设计模式》
迭代器 - Java教程 - 廖雪峰的官方网站
迭代器设计模式