java设计模式:迭代器设计模式

Java设计模式之迭代器模式:从基础到高级的全面解析 迭代器模式是一种行为设计模式,用于在不暴露集合内部结构的情况下顺序访问元素。该模式将遍历责任从集合对象转移到迭代器对象,核心组件包括抽象聚合(如Iterable)、具体聚合(如ArrayList)、抽象迭代器(如Iterator)和具体迭代器实现。Java集合框架已内置迭代器支持,开发者也可自定义多种遍历方式(如正序/逆序)。迭代器模式简化了集合实现,支持多种遍历并存,并确保遍历过程的安全性。典型应用场景包括统一访问不同结构的集合元素、需要多种遍历方式或隐藏集合内部细节的情况。 阅读详情
package com.selfStudy;
import java.util.*;


/*
 *  [结合java:四器 之 迭代器](http://blog.youkuaiyun.com/managementandjava/article/details/51404884)
 * 
 * 通过以下两个例子来展现iterator的用法;
 *      首先理解下为什么存在迭代器;
 *      迭代器就是集合取出元素的方式;
 *      因为每个容器都有 存和取的功能,由于每个容器的数据存储结构不同,其存和取的方式也就不同;而对于取出元素,其不止一个动作来完成(先判断 再取等多个动作)
 *      那么这多个动作就应该封装成一个对象;这样每个容器中就都有一个取出数据的对象;因为不同容器的数据结构不同,因此每个容器中取出对象的实现方式也不一样;
 *      那么就应该在每个容器内部 定义一个取出元素的内部类(因为数据就存在这个容器中,直接用内部类来操作这些数据时最方方便的,因此用内部类),但是这些取出
 *      的内部类有自己的共性东西 都有 判断和取出。因此就可以向上抽取成一个接口(Iterator)
 * 
 *      对内部类的理解和迭代器设计模式的理解:
 *          内部类: 容器是一个事物,而容器内部存储的东西也是一个事物,那么就可以定一个内部类在容器内操容器内的事物;
 *          迭代器设计模式:多个类都有自己操作其内部数据的方式,而这些方式又有相同的共性,那么就可以把这个共性抽取成一个接口,在各个类中提供一个方法
 *                     来返回这个接口,通过这个接口(进而通过内部类)来操作这多个类中的数据;
 * 
 *  迭代器设计模式:
 *      又称游标设计模式:GOF给出的定义:提供一种方法访问一个容器对象中的各个元素,而又不暴露该对象的内部细节
 *  组成元素:
 *  1.抽象迭代器:定义遍历元素所需要的方法,一般来说会有这么三个方法:next(),hasNext()和remove(),
 *  2.迭代器实现:实现迭代器接口中定义的方法,完成集合的迭代。
 *  3.抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。
 *  4.具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList.
 * 
 * 使用场景:
 *  迭代器模式是与集合共生共死的,一般来说,我们只要实现一个集合,就需要同时提供这个集合的迭代器,就像java中的
 *  Collection,List、Set、Map等,这些集合都 *  有自己的迭代器。假如我们要实现一个这样的新的容器,当然也需要引
 *  入迭代器模式,给我们的容器实现一个迭代器。
 * */

//实例1:
//1.抽象迭代器
interface MyIterator{
    public Object next();
    public boolean hasNext();
}

//2.迭代器实现
class MyListIterator implements MyIterator{
    private List<?> list = null;
    public MyListIterator(List<?> list){
        this.list = list;
    }

    private int count = 0;
    public Object next(){
        Object obj=null;
        if(this.hasNext()){
            obj =  list.get(count++);
        }
        return obj; 
    }

    public boolean hasNext(){
        if(count==list.size())
            return false;
        else
            return true;
    }
}

//抽象容器
interface MyCollection{
    public void addAll(Object[] objs);
    public MyIterator iterator();
}

//具体容器
class MyListCollection implements MyCollection{
    private List<Object> list= new ArrayList<Object>();

    public void addAll(Object[] objs) {
        for(Object obj:objs)
            list.add(obj);
    }
    @Override
    public MyIterator iterator() {
        return new MyListIterator(list);
    }

}


public class IteratorModel {

    public static void main(String[] args) {
        String[] infos = "hello java : wo should say hello to the world !!".split(" ");

        MyListCollection mc = new MyListCollection();
        mc.addAll(infos);
        for(MyIterator mi = mc.iterator();mi.hasNext();){
            System.out.print(mi.next()+" ");
        }
    }
}











输出结果:
hello java : wo should say hello to the world !!

【Python】SimpleITK使用笔记 1. 概念 1.1 nii格式 1.2 SimpleITK 1.3 SimpleITK 图像 2. 基本操作 2.1 常见属性 2.1 读取和保存图像 2.2 SimpleITK图像数据和Numpy矩阵数据之间的转换 阅读详情

相关推荐

保姆级教程:从AD导出Gerber到HFSS 3D Layout导入,搞定PCB电磁仿真全流程

本文提供从Altium Designer导出Gerber文件到Ansys HFSS 3D Layout导入的完整PCB电磁仿真流程指南。详细讲解Gerber文件导出设置、HFSS中的3D模型重建技巧,以及电磁仿真中的常见问题解决方案,帮助工程师高效完成高速电路和射频设计的性能验证。

weixin_30379531的博客 705

java里为什么要使用迭代器

Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。 例如,如果没有使用Iterator,遍历一个数组的方法是使用索引: for(int i=0; i<array.size(); i++) { … get(i) … } 而访问一个链表(LinkedList)又必须使用while循环: while((e=e.ne...

qq_34444599的博客 925

手把手教你搭建硬件在回路(HIL)仿真系统:从Simulink建模到实时测试

本文详细介绍了如何从零开始搭建硬件在回路(HIL)仿真系统,涵盖Simulink建模、实时仿真、代码生成及调试等关键步骤。通过具体配置示例和优化技巧,帮助开发者解决复杂控制系统验证中的技术难题,提升半实物仿真的效率和可靠性。

weixin_30952535的博客 445

Java中为什么要使用迭代器?

一、推出迭代器(iterator)目的 1.从更高的角度进行分析,使用容器有一个缺点:要使用容器,就必须对容器的确切类型编程;如果我们暂且搁置一边,先来说说下面一种情况: (1)如果你在代码中原本对List进行编程,但是后来感觉使用Set进行编程更方便一些,此时你应该怎么做?你的答案可能会按照Set的逻辑在重头写代码,它们只是使用容器,不知道或者说不关心容器的类型,那么如何在不重写代码就应用于不同...

xiaoleilei666的博客 4648

通讯软件013——分分钟学会Kepware OPC AE Server仿真配置

本文介绍如何使用Kepware软件仿真OPC AE Server配置。

zhouwl72的博客 2226

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 255

【Java开发】设计模式 16:迭代器模式

迭代器模式将遍历算法与集合对象分离,使得对集合的遍历可以独立于集合的实现方式。通过使用迭代器模式,可以实现对一个集合对象的多种遍历方式。通常,迭代器模式包括一个迭代器接口、一个具体迭代器类和一个聚合对象接口。迭代器是学习 Java 语言的基础,没有迭代器,集合类的遍历就成了问题,正是因为有迭代器的存在,才能更加优雅的使用 foreach 语法。

尹煜的博客 245

开发者体验度量:构建DevEx评估体系的方法论与工具

在深入讨论度量方法前,我们需要明确什么是开发者体验(DevEx)。许多人将其简化为"开发工具好不好用",这是一个危险的误解。开发者体验是指开发者在完成工作过程中的整体感受和效率,它由三大核心维度组成:工具与基础设施:开发、测试、部署工具链的效能流程与协作:工作流程的顺畅度和团队协作的效率文化与成长:支持实验、学习和专业发展的环境这三个维度相互作用,共同决定了开发者能否高效且愉悦地完成工作。开发者体验不是一个目的地,而是一段持续的旅程。

2401_88760782的博客 1428

java中集合为什么要有迭代器

集合为什么要有迭代器 首先我们要知道迭代器是一种设计模式,既然是一种设计模式那么肯定是为了简化、更加通用的来遍历我们的集合 我们先看看普通遍历集合的方法 package com.hj.test import java.util.* public class CollectionTest{ public static void main(String[] args){ List<String> list = new ArrayList(); list.add("aaa"); lis

weixin_43198784的博客 2175

ISO 21434汽车网络安全标准深度解读系列(十):标准实施总结与展望

ISO21434标准深度解读系列总结篇系统回顾了汽车网络安全标准的核心内容与实施要点。文章梳理了10篇系列文章的结构体系,提炼出标准的三大核心价值:系统性方法(全生命周期覆盖、多层次管理)、风险导向理念(威胁驱动、动态管理)和供应链协同机制。总结了实施经验中的关键要素,包括高层承诺、专业团队建设,并提出了分阶段实施路径建议。同时分析了当前面临的技术挑战(系统复杂性、新兴技术)和管理挑战(文化转变、资源投入)。最后展望了AI应用、零信任架构等技术发展趋势,以及标准未来的演进方向,为企业实施提供战略与执行层面的

VehSwHwDeveloper的博客 557

【MicroPython编程-ESP32篇:设备驱动】-SHT31温度湿度传感器驱动

SHT31 是 Sensirion 的下一代温湿度传感器。 它建立在一个新的 CMOSens® 传感器芯片之上,该芯片是 Sensirion 新湿度和温度平台的核心。

视觉与物联智能 228

为什么要设计出迭代器

首先使用迭代器适用性强,因为如果用for循环遍历,需要事先知道集合的数据结构,而且当换了一种集合的话代码不可重用要修改,不符合开闭原则。而Iterator是用同一种逻辑来遍历集合。其次使用Iterator可以在不了解集合内部数据结构的情况下直接遍历,这样可以使得集合内部的的数据不暴露。 for循环的遍历 ArrayList<Integer> list = new ArrayList<>(); for(int i = 0; i < list.size(); i++){    Sy

u013733643的博客 1537

数据分析之AB测试基础知识

在 A/B 测试中,零假设是两组的指标是相同的,当假设检验推断出两组指标不同,但事实上两组指标相同时,就是第一类错误。

qq_45727498的博客 560

Java设计模式:迭代器

迭代器模式用于迭代对象的集合。这是一种常用的模式,您以前可能已经使用过。每当您看到诸如hasNext()和next()之类的东西时,它可能都是迭代器模式。例如,您可以遍历数据库查询记录列表。 迭代器模式类图 迭代器模式Java代码 interface IIterator{ public boolean hasNext(); public Object next(); } interfac...

qq_41806546的博客 83

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java设计模式之行为型:迭代器模式

迭代器模式提供一种访问集合中的各个元素,而不暴露其内部表示的方法。将在元素之间游走的职责交给迭代器,而不是集合对象,从而简化集合容器的实现,让集合容器专注于在它所应该专注的事情上,更加符合单一职责原则。

张维鹏的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java 设计模式: 迭代器模式

目录结构1. 看一个具体的需求2 传统的设计方案(类图)3 传统的方式的问题分析4 迭代器模式基本介绍4.1 基本介绍5 迭代器模式的原理类图➢原理类图➢对原理类图的说明:即(迭代器模式的角色及职责)6 迭代器模式应用实例➢应用实例要求➢设计思路分析➢具体实现类图:7 源码:➢Department➢ICollege➢InfoCollege implements ICollege➢ComputerCollege implements ICollege➢InfoCollegeIterator implement

Beyond_Nothing 623

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java设计模式:迭代器模式

前言 在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。 既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历方法由用户自己实现是否可行呢?答案是同样不可取,因为这种方式会存在两个缺点: 暴露了聚合类的内部表示,使其数据不安全; 增加了客户的负担。 “迭代器模式”能较好地克服以上缺点,它在客户访问类与聚合类之

s297165331的专栏 341

迭代器 java_Java设计模式8:迭代器模式

迭代器模式迭代器模式又叫做游标(Cursor)模式,其作用是提供一种方法访问一个容器元素中的各个对象,而又不暴露该对象的内部细节。迭代器模式结构迭代器模式由以下角色组成:1、迭代器角色负责定义访问和遍历元素的接口2、具体迭代器角色实现迭代器接口,并要记录遍历中的当前位置3、容器角色负责提供创建具体迭代器角色的接口4、具体容器角色实现创建具体迭代器角色的接口,这个具体迭代器角色与该容器的结构相关迭代...

weixin_39674414的博客 84

Java设计模式(十):迭代器设计模式

1.应用场景 (1)访问一个聚合对象的内容而无需暴露它的内部表示 (2)支持对聚合对象的多种遍历 (3)为遍历不同的聚合结构提供一个统一的接口 2.概念 提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。这个模式给使用者提供了一种方法,可以顺序访问一个聚集对象中的元素,而又不用知道内部是如何表示的。 3. Class Digram Aggregate 是聚合类,其中 create...

Master-TJ的个人博客 589

Java迭代器:轻松遍历集合元素的设计模式

迭代器使得开发人员无需了解集合底层的实现细节,便可以方便地对集合中的元素进行遍历。迭代器模式在Java的集合框架(Collection Framework)中得到了广泛的应用,其中包括List、Set、Queue等接口。总的来说,迭代器模式是一种非常实用的设计模式,尤其适用于需要遍历集合中元素的场景。迭代器实现类:这是迭代器接口的具体实现,负责管理集合中的元素。通常,迭代器实现类会维护一个指向集合中下一个元素的指针,并提供相应的方法来遍历和访问这些元素。然后,我们使用迭代器遍历这个集合,输出所有元素。

迷路的小绅士之家 982

java设计模式深度解析与实践:迭代器模式

迭代器模式,又称为游标模式,是一种行为设计模式。它的主要目的是提供一种方法,方便遍历聚合对象中的元素,而不暴露底层数据结构。换句话说,迭代器模式为遍历集合中的元素提供了一种统一的接口,使得我们可以以一致的方式遍历不同的数据结构,比如列表、树、图等。在Java编程中,我们常常需要遍历集合中的元素。例如,我们需要遍历一个List中的所有元素,计算它们的总和,或者找出其中满足某些条件的元素。如果没有迭代器模式,我们可能需要直接操作集合的内部结构,这会暴露实现细节,降低代码的灵活性和可维护性。

panqiangqiangqiang的博客 1248

java设计模式迭代器模式_行为设计模式:迭代器

java设计模式迭代器模式 迭代器模式是行为模式中最常用的模式之一。 在大多数情况下,您甚至没有注意到它。 假设您有一个包含元素的容器,并且想遍历它们。 根据容器,检索方法等的不同,元素的迭代可能会有所不同。通过使用迭代器模式,我们可以将容器使用的算法与检索方法解耦,并抽象出所包含元素的迭代。 例如,当涉及从其余端点检索分页数据时,迭代器可以帮助您抽象化它。 因此,您不会向用户显示有关如何...

danpu0978的博客 94

Java 设计模式・迭代器模式篇:从思想到代码实现

摘要:迭代器模式是一种行为型设计模式,用于提供统一的方法顺序访问聚合对象中的元素,同时隐藏其内部结构。该模式将遍历逻辑从聚合类中抽离,通过迭代器接口(如hasNext()、next())实现解耦,支持多种遍历方式且符合单一职责原则。虽然会增加系统复杂度,但特别适用于需要统一遍历不同数据结构、隐藏内部实现或支持多种遍历方式的场景。Java集合框架中的Iterator接口是典型实现,相比普通for循环具有更好的封装性和扩展性,但简单遍历场景可能造成过度设计。模式包含抽象聚合、具体聚合、抽象迭代器和具体迭代器四个

l7_yuqi的博客 768

Java设计模式(18):迭代器模式

18,迭代器模式(Iterator) 18.1,问题引入_学校体系结构 在 组合模式 中引入了学校体系结构,并通过 List 集合对各个层级进行定义,可以很方便的对整个结构进行遍历 但是如果各个层级的下属部门集合不一定都是用 List 集合定义,而是通过 Set,array 或者其他自定义方式进行存储,那就没有一个统一的方式进行结构遍历 此时可以引入迭代器模式进行统一 18.2,基本介绍 迭代器模式(Iterator Pattern)是一种常用的设计模式,属于行为型模式 如果我们的集合是通过不同的方式

zp_zhang的博客 226
上一篇: java设计模式:单例设计模式
下一篇: java设计模式:代理模式
Coder-Qian
博客等级 码龄11年 63粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值