CLIP Prompt 输入实战指南:从原理到最佳实践

核心内容摘要

HY-Motion 1.0在游戏NPC行为树中的应用实践
【算法提高篇】(八)线段树 + 数学:解锁硬核区间问题,公式推导才是解题关键

4个Amlogic设备核心启动问题的系统化解决方案:面向开发者与爱好者的Armbian故障排查指南

迭代器模式 (Iterator Pattern)什么是迭代器模式迭代器模式是一种行为型设计模式它允许你遍历集合对象中的元素而不暴露集合的内部表示。

简单来说迭代器模式就是提供一个统一的接口来遍历不同的集合。

生活中的例子想象一下电视遥控器上一个频道、下一个频道音乐播放器上一首、下一首翻书上一页、下一页为什么需要迭代器模式传统方式的问题// 客户端需要了解集合的内部结构for(inti0;ilist.size();i){System.out.println(list.get(i));}问题暴露内部暴露了集合的内部结构不统一不同集合的遍历方式不同难以扩展新增集合类型需要修改客户端迭代器模式的优势// 使用迭代器Iteratoriteratorcollection.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}优势统一接口提供统一的遍历接口隐藏内部隐藏集合的内部结构易于扩展新增集合类型很容易迭代器模式的结构┌─────────────────────┐ │ Iterator │ 迭代器接口 ├─────────────────────┤ │ hasNext(): boolean│ │ next(): Object │ └──────────┬──────────┘ │ 实现 │ ┌──────────┴──────────┐ │ ConcreteIterator │ 具体迭代器 ├─────────────────────┤ │ - index: int │ │ - collection: Col │ │ hasNext(): boolean│ │ next(): Object │ └─────────────────────┘ ┌─────────────────────┐ │ Iterable │ 可迭代接口 ├─────────────────────┤ │ iterator(): Iter │ └──────────┬──────────┘ │ 实现 │ ┌──────────┴──────────┐ │ ConcreteCollection │ 具体集合 ├─────────────────────┤ │ - elements: List │ │ iterator(): Iter │ └─────────────────────┘代码示例

定义迭代器接口/** * 迭代器接口 */publicinterfaceIterator{/** * 是否有下一个元素 */booleanhasNext();/** * 获取下一个元素 */Objectnext();}

定义可迭代接口/** * 可迭代接口 */publicinterfaceIterable{/** * 获取迭代器 */Iteratoriterator();}

定义具体迭代器/** * 具体迭代器 */publicclassConcreteIteratorimplementsIterator{privateListObjectelements;privateintindex0;publicConcreteIterator(ListObjectelements){this.elementselements;}OverridepublicbooleanhasNext(){returnindexelements.size();}OverridepublicObjectnext(){if(hasNext()){returnelements.get(index);}returnnull;}}

定义具体集合/** * 具体集合 */publicclassConcreteCollectionimplementsIterable{privateListObjectelementsnewArrayList();publicvoidadd(Objectelement){elements.add(element);}OverridepublicIteratoriterator(){returnnewConcreteIterator(elements);}}

使用迭代器/** * 迭代器模式测试类 * 演示如何使用迭代器模式遍历集合 */publicclassIteratorTest{publicstaticvoidmain(String[]args){System.out.println( 迭代器模式测试 \n);// 创建集合ConcreteCollectioncollectionnewConcreteCollection();collection.add(元素

;collection.add(元素

;collection.add(元素

;collection.add(元素

;collection.add(元素

;// 使用迭代器遍历System.out.println(--- 使用迭代器遍历 ---);Iteratoriteratorcollection.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}System.out.println(\n 迭代器模式的优势 );System.out.println(

统一接口提供统一的遍历接口);System.out.println(

隐藏内部隐藏集合的内部结构);System.out.println(

易于扩展新增集合类型很容易);System.out.println(

简化客户端简化客户端代码);System.out.println(\n 实际应用场景 );System.out.println(

集合框架Java集合框架);System.out.println(

数据库查询数据库结果集);System.out.println(

文件遍历文件系统遍历);System.out.println(

树形结构树形结构遍历);System.out.println(\n Java中的迭代器 );System.out.println(Java中的集合框架都实现了Iterable接口);System.out.println(- List: ArrayList, LinkedList);System.out.println(- Set: HashSet, TreeSet);System.out.println(- Map: HashMap, TreeMap (通过entrySet()));System.out.println(\n使用for-each循环);System.out.println(for (Object element : collection) {);System.out.println( System.out.println(element););System.out.println(});}}迭代器模式的优点统一接口提供统一的遍历接口隐藏内部隐藏集合的内部结构易于扩展新增集合类型很容易简化客户端简化客户端代码迭代器模式的缺点增加复杂度引入了额外的类性能开销多了一层调用适用场景遍历集合需要遍历集合对象统一接口需要统一的遍历接口隐藏内部需要隐藏集合的内部结构常见应用场景集合框架Java集合框架数据库查询数据库结果集文件遍历文件系统遍历使用建议遍历集合使用迭代器模式统一接口使用迭代器模式简单遍历直接使用for循环即可

注意事项⚠️ 迭代器模式虽然有用但要注意考虑使用for-each循环注意并发修改问题

用注水器给人打水处罚视频免费-用注水器给人打水处罚视频免费应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123