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

设计模式13-迭代器模式

定义

        Iterator Pattern:它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。

场景

  • 当需要遍历一个聚合对象,但不希望暴露其内部结构时(如隐藏列表的实现细节)。

  • 当需要为同一聚合对象提供多种不同的遍历方式时(如正向遍历、反向遍历)。

  • 当需要统一不同聚合对象的遍历接口时(如让列表、树、图等不同结构支持相同的遍历操作)。

Java场景

  • 所有集合类(ListSetMap 等)都实现了 Iterable 接口,通过 iterator() 方法返回迭代器。

  • Iterator 接口定义了 hasNext()next() 等方法,负责具体的遍历逻辑。

代码

import java.util.ArrayList;import java.util.List;public class Iterator {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("A");list.add("B");//迭代器模式java.util.Iterator<String> iterator = list.iterator();while(iterator.hasNext()){String next = iterator.next();System.out.println(next);}//集合中的迭代器模式//当代码执行到 for (String element : list) 时,编译器会调用 list(它必须是 Iterable 的实现)的 .iterator() 方法,来获取一个迭代器实例。//然后,这个迭代器被用来循环调用 hasNext() 和 next() 方法,直到遍历结束。for (String element : list) {System.out.println(element);}}
}

迭代器模式代码

http://www.dtcms.com/a/360748.html

相关文章:

  • OS+MySQL+(其他)八股小记
  • 【lucene】 中的impactsenum与impactsdisi有啥区别?
  • 开源npm引导guide组件
  • 基于.NET Framework 4.0的FTP文件传输类
  • 基于Hadoop的可视化城市宜居指数分析(代码+数据库+LW)
  • 【macOS】垃圾箱中文件无法清理的常规方法
  • Mac上如何安装mysql
  • MIT 6.5840 (Spring, 2024) 通关指南——Lab 2: Key/Value Server
  • 【Docker】Docker容器和镜像管理常用命令
  • Spring Bean 生命周期中的 @PostConstruct 注解
  • TCP实现线程池竞争任务
  • LeetCode Hot 100 Python (31~40)
  • 运动规划实战案例 | 基于行人社交模型的移动机器人动态避障(附ROS C++仿真)
  • Linux Tun/Tap 多队列技术
  • 【STM32】贪吃蛇 [阶段2](嵌入式进阶方向)
  • 【含文档+PPT+源码】基于SpringBoot+微信小程序的饮水健康之净水器保养管理系统设计与实现【包运行成功】
  • 【Linux】模拟实现Shell(下)
  • 打开模板打印
  • Ajax笔记(下)
  • 《探索C++11:现代C++语法的性能革新(上篇)》
  • 医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(八)
  • Redis 核心概念解析:从渐进式遍历、数据库管理到客户端通信协议
  • 《C++进阶之STL》【红黑树】
  • C语言数据结构之双向链表
  • 基于 DNA 的原核生物与微小真核生物分类学:分子革命下的范式重构​
  • 【JavaWeb】之HTML(对HTML细节的一些总结)
  • Notepad++近期版本避雷
  • 【golang长途旅行第35站】Redis
  • Objective-C 的坚毅与传承:在Swift时代下的不可替代性优雅草卓伊凡
  • 云市场周报 (2025.09.01):解读腾讯云向量数据库、阿里云西安节点与平台工程