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

免费做 爱视频网站备案网站名称重复

免费做 爱视频网站,备案网站名称重复,百度霸屏推广多少钱一个月,自己建网站要学什么目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 1、核心思想 目的:将遍历逻辑与数据存储结构解耦 概念:提供一种机制来按顺序访问集合中的各元素,而不需要知道集合内部的构造 举例:…

目录

1、核心思想

2、实现方式

2.1 模式结构

2.2 实现案例

3、优缺点分析

4、适用场景


1、核心思想

目的:将遍历逻辑与数据存储结构解耦

概念:提供一种机制来按顺序访问集合中的各元素,而不需要知道集合内部的构造

举例

1> 书籍目录与翻页:目录是迭代器,读者通过目录按顺序查找内容,无需了解书籍的章节存储方式

2> 音乐播放列表:播放器通过“下一曲”按钮遍历歌曲列表,不关心列表是数组还是链表

2、实现方式

2.1 模式结构

四种核心角色:

  • Iterator(迭代器接口)​:迭代器的接口标准,定义遍历元素的方法,如next()、hasNext()等。
  • ConcreteIterator(迭代器实现)​:迭代器接口Iterator的具体实现类,管理遍历的当前位置和逻辑。
  • Aggregate(集合接口)​:集合标准接口,一种具备迭代能力的指标。
  • ConcreteAggregate(集合实现)​:实现集合接口Aggregate的具体集合类,可以实例化并返回一个迭代器以供外部使用(如createIterator())。

2.2 实现案例

以遍历自定义集合为例,实现正向和反向迭代器:

// 迭代器接口
interface Iterator<T> {boolean hasNext();T next();
}// 具体聚合类(集合)
class BookCollection {private String[] books = {"Java", "Python", "C++"};// 创建正向迭代器public Iterator<String> createForwardIterator() {return new ForwardIterator();}// 创建反向迭代器public Iterator<String> createReverseIterator() {return new ReverseIterator();}// 正向迭代器(私有内部类)private class ForwardIterator implements Iterator<String> {private int index = 0;@Overridepublic boolean hasNext() {return index < books.length;}@Overridepublic String next() {if (hasNext()) {return books[index++];}return null;}}// 反向迭代器(私有内部类)private class ReverseIterator implements Iterator<String> {private int index = books.length - 1;@Overridepublic boolean hasNext() {return index >= 0;}@Overridepublic String next() {if (hasNext()) {return books[index--];}return null;}}
}// 客户端调用
public class Client {public static void main(String[] args) {BookCollection collection = new BookCollection();System.out.println("正向遍历:");Iterator<String> forward = collection.createForwardIterator();while (forward.hasNext()) {System.out.println(forward.next());}System.out.println("\n反向遍历:");Iterator<String> reverse = collection.createReverseIterator();while (reverse.hasNext()) {System.out.println(reverse.next());}}
}

关键点:

  • 封装遍历细节:迭代器内部维护遍历状态(如当前索引),客户端仅调用hasNext()next()

  • 支持多遍历方式:同一集合可提供多种迭代器(如正向、反向、过滤等)。

3、优缺点分析

优点缺点
解耦客户端代码与集合结构增加类的数量(迭代器需单独实现)
支持多种遍历策略简单集合使用迭代器可能冗余
符合单一职责和开闭原则

4、适用场景

  • 集合框架

    • Java的Collection通过Iterator提供遍历能力,如List.iterator()

List<String> list = Arrays.asList("A", "B", "C");
Iterator<String> it = list.iterator();
while (it.hasNext()) {System.out.println(it.next());
}
  • 复杂数据结构遍历

    • 树、图等结构的深度优先(DFS)、广度优先(BFS)遍历。

class TreeNode {int val;TreeNode left, right;// 构造方法省略
}// 中序遍历
class InOrderIterator implements Iterator<TreeNode> {private Stack<TreeNode> stack = new Stack<>();public InOrderIterator(TreeNode root) {pushLeft(root);}private void pushLeft(TreeNode node) {while (node != null) {stack.push(node);node = node.left;}}@Overridepublic boolean hasNext() {return !stack.isEmpty();}@Overridepublic TreeNode next() {TreeNode node = stack.pop();pushLeft(node.right); // 处理右子树return node;}
}// 使用示例
TreeNode root = buildTree(); // 构建二叉树
Iterator<TreeNode> it = new InOrderIterator(root);
while (it.hasNext()) {System.out.println(it.next().val);
}
  • 数据库查询结果处理

    • 遍历查询结果集(如JDBC的ResultSet)。

  • 文件系统遍历

    • 递归遍历目录中的文件。

  • 分页加载数据

    • 分批加载大数据集(如社交媒体的动态流)。

http://www.dtcms.com/wzjs/565943.html

相关文章:

  • 内蒙古住房和城乡建设网站网站建设人员
  • 电商平台门户网站建设的重要性石家庄关键词优化平台
  • 来返苏州人员信息登记平台厦门网站快速排名优化
  • 莱州网站建设报价企业网站备案名称
  • 乌海网站开发学广告设计学费是多少
  • 德州网站建设优化怎么免费建立自己的网站平台
  • 云南省做网站开发的公司排名网站平台由什么搭建
  • 佛山网站建设首页排名网站设计图
  • 网站服务器租用有什么好品牌设计公司50强
  • 宿州微网站建设网站中flash怎么做
  • 中国建设信用卡网站首页十个源码网站
  • 建网站的价格微博推广会被别人看出来吗
  • 诸暨企业网站建设黑马程序员培训机构官网
  • 铁岭网站制作手机网站和app的区别
  • 自己主机做标签电影网站wordpress 4.4.2漏洞
  • 国外网站建设视频教学教务管理系统设计
  • 招聘网站排名搜索引擎论文3000字
  • 中小学网站建设论文手机网站建站APP
  • 西安网站制作设计定制手机版的学习网站
  • 网站被做跳转修改wordpress 的权限
  • 山东专业的网站建设大学院系网站建设
  • python网站开发用什么软件优化网站建设人员组成
  • 企业网站怎么做毕业设计开网站买自己做的东西
  • 手机网站建设开发报价前端做网站使用的软件工具
  • 网站制作定制18免费客户管理软件哪个好用
  • 网站创意模板广州机械网站建设外包
  • 中国城乡建设部人力网站首页九江seo公司
  • 网上做调查网站网站服务器排名
  • 微商可以做网站推广吗百度推广效果怎样一天费用
  • 西安网站建设kxccc郑州妇科医院免费咨询