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

【设计模式探索——智能遍历:如何用迭代器模式优化AI数据处理】

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”

文章目录

    • 迭代器
    • 含义
    • 迭代器模式的优点
    • 迭代器的核心思想

世上本没有迭代器,不爽的人多了,便有了迭代器 --- 鲁.不正经.Aileen

在这里插入图片描述

迭代器

含义

迭代器:提供一个方式来遍历集合,无需暴露集合的实现

在这里插入图片描述

  1. Client(客户端):这是使用迭代器模式的外部代码,它通过迭代器来访问聚集中的元素。

  2. AbstractIterator(抽象迭代器):这是一个抽象类或接口,定义了迭代器的接口,包括GetFirst(), GetNext(), 和 AtEnd()方法。GetFirst()用于获取聚集中的第一个元素,GetNext()用于获取当前元素的下一个元素,而AtEnd()用于检查是否已经到达聚集的末尾。

  3. AbstractAggregate(抽象聚集):这是一个抽象类或接口,定义了创建相应迭代器的方法CreateIterator()。所有的聚集类都将实现这个接口。

  4. Aggregate(聚集):这是具体的聚集类,它实现了AbstractAggregate接口,并提供了CreateIterator()方法的具体实现,用于返回一个迭代器对象。

  5. Iterator(迭代器):这是具体的迭代器类,它实现了AbstractIterator接口。它负责维护一个游标来跟踪当前遍历的位置,并实现了遍历聚集元素的具体逻辑。

  6. CreateIterator():这是在抽象聚集和具体聚集中定义的方法,用于创建并返回一个迭代器对象。

图中的箭头表示类之间的继承关系(实线带空心三角形)和依赖关系(虚线箭头)。客户端依赖于抽象迭代器来遍历聚集,而具体的聚集类则负责提供迭代器的具体实现。

迭代器模式的优点

  • 聚集的接口可以独立于遍历它的迭代器的接口。
  • 可以为同一个聚集定义多个迭代器,以支持不同的遍历。
  • 可以容易地添加新的迭代器,而不影响现有的聚集和迭代器。

在这里插入图片描述

  • 迭代器: 是一种可以遍历容器的机制,使得程序员能够使用相同的代码对不同的数据容器进行遍历。迭代器背后的机制是迭代器协议,一个对象只要有_iter__next_方法,他就是一个迭代器。迭代器的惰性加载特性使得在处理大量数据时,程序的编写变的更加方便。
public class Interator_Explor {
    public static void main(String[] args) {
        // 数组遍历方式1:通过下标遍历
        int[] arr = {66,77,99};
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

        // 数组遍历方式2:for-each循环: 是上面代码的一种简化
        int[] arr2 = {1,2,3};
        for(int j : arr2){
            System.out.println();
        }
     }
}

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

public class Interator_Explor {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(99);
        list.add(77);
        list.add(33);

        //集合遍历方式1:迭代器
        //先把集合中的元素导入到迭代器中
        Iterator<Integer> i = list.iterator();
        //通过while循环去遍历迭代器中的元素,hasNext方法返回的是一个布尔值,判断迭代器中是否还有元素,有就打印,没有就跳出循环
        while (i.hasNext()){
            System.out.println(i.next());
        }

        //集合遍历方式2:for-each循环
        for (int j:list) {
            System.out.println(j);
        }
    }

在这里插入图片描述

迭代器的核心思想

迭代器的核心思想是:将多个接口转移到一个接口上。 假如我们有List、Set、 ArrayList等100个集合,如果不使用迭代器的话,我们就需要掌握100种遍历集合的方法,但是如果有了迭代器,我们就可以将这些集合封装成迭代器,只需要掌握如何遍历迭代器,就可以遍历想要的元素。

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)
](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)


http://www.kler.cn/a/448680.html

相关文章:

  • ubuntu22.04.5本地apt源部署
  • 登山第十六梯:深度恢复——解决机器人近视问题
  • 算法设计期末复习
  • 设计模式期末复习
  • 【spring-cloud-gateway总结】
  • CMD使用SSH登陆Ubuntu
  • 汇总贴:cocos creator
  • ECharts关系图-关系图11,附视频讲解与代码下载
  • STM32 HAL库之串口接收不定长字符
  • 【报表查询】.NET开源ORM框架 SqlSugar 系列
  • 降低Mobx技术债问题-React前端数据流方案调研整理
  • etcd网关
  • ubuntu中mysql只能通过sudo才能进入如何解决
  • MES系统工作流的单元测试方案
  • Unity3D用正则判断身份证号或邮箱
  • 【Java基础面试题028】Java中的hashCode和equals方法,与==操作符有什么区别?
  • Mysql连接报错:1130-host ... is not allowed to connect to this MySql server如何处理
  • 模型部署学习笔记——模型部署关键知识点总结
  • 数据结构十大排序之(基数,计数,桶排)
  • 【计算机视觉】超简单!傅里叶变换的经典案例
  • Qt有哪些读取文件的方式
  • UE5 小怪血条
  • 34 Opencv 自定义角点检测
  • Unity Apple Vision Pro 开发教程:物体识别跟踪
  • 力扣 429 场周赛-前两题
  • Linux IPC:读写锁汇总整理