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

设计模式:11、迭代器模式(游标)

目录

0、定义

1、迭代器模式的四种角色

2、迭代器模式的UML类图

3、示例代码

4、迭代器的next()方法与集合的get(int index)方法的效率对比(LinkedList为例)


0、定义

        提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

1、迭代器模式的四种角色

  • 集合(Aggregate):一个接口,规定了具体集合需实现的操作。
  • 具体集合(ConcreteAggregate):具体集合是实现集合接口的类的实例,具体集合按着一定结构存储对象。具体集合应当有一个方法,该方法返回一个针对该集合的具体迭代器
  • 迭代器(Iterator):一个接口,规定了遍历具体集合的方法,比如next()方法。
  • 具体迭代器(ConcreteIterator):实现迭代器接口的类的实例。具体迭代器在现实迭代器接口所规定的遍历集合的方法时,比如next()方法,要保证next()方法的首次调用将按着集合的数据结构找到该集合中的一个对象,而且每当找到集合中的一个对象,立刻根据该集合的存储结构得到待遍历的后继对象的引用,并保证依次调用next()方法可以遍历集合

2、迭代器模式的UML类图

3、示例代码

待设计……

4、迭代器的next()方法与集合的get(int index)方法的效率对比(LinkedList为例)

package xyz.jangle.list;import java.util.Iterator;
import java.util.LinkedList;public class ListMain {public static void main(String[] args) {LinkedList<String> list = new LinkedList<String>();for (int i = 0; i < 39999; i++) {list.add(""+i);}Iterator<String> iterator = list.iterator();long time1 = System.currentTimeMillis();while(iterator.hasNext()) {System.out.println(iterator.next());}long time2 = System.currentTimeMillis();for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}long time3 = System.currentTimeMillis();System.out.println("Iterator:"+(time2-time1));System.out.println("For:"+(time3-time2));}}

输出结果

Iterator:153
For:1855

总结:使用迭代器效率要比get方法快很多,数量越大,效果越明显。

相关文章:

设计模式:11、迭代器模式(游标)

目录 0、定义 1、迭代器模式的四种角色 2、迭代器模式的UML类图 3、示例代码 4、迭代器的next()方法与集合的get(int index)方法的效率对比&#xff08;LinkedList为例&#xff09; 0、定义 提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不需要暴露该对象…...

Oracle SCN与时间戳的映射关系

目录 一、基本概述 二、相关操作 三、参考文档 一、基本概述 Oracle 数据库中的 SYS.SMON_SCN_TIME 表是一个关键的内部表&#xff0c;主要用于记录过去时间段中SCN与具体的时间戳之间的映射关系。这种映射关系可以帮助用户将 SCN 值转换为可读性更强的时间戳&#xff0c;从而…...

【广告投放系统】头条可视化投放平台vue3+element-plus+vite落地历程和心得体会

前言 hallo&#xff0c;又是许久未见&#xff0c;昨天也是正式把公司内部的广告投放平台暂时落地&#xff0c;我也即将离开待了两年多的地方。言归正传&#xff0c;由于头条广告后台的升级改版&#xff0c;因此为了满足内部投放需求&#xff0c;做了一个可视化的投放平台&…...

Gazebo插件相机传感器(可订阅/camera/image_raw话题)

在仿真环境中使用相机传感器&#xff0c;通常需要结合Gazebo插件来实现。Gazebo是一个功能强大的机器人仿真工具&#xff0c;支持多种传感器模型&#xff0c;包括相机。下面是如何在Gazebo中使用相机传感器的详细步骤。 1. 修改Xacro文件以包含Gazebo插件 首先&#xff0c;修…...

华三(HCL)和华为(eNSP)模拟器共存安装手册

接上章叙述&#xff0c;解决同一台PC上同时部署华三(HCL)和华为(eNSP&#xff09;模拟器。原因就是华三HCL 的老版本如v2及以下使用VirtualBox v5版本&#xff0c;可以直接和eNSP兼容Oracle VirtualBox&#xff0c;而其他版本均使用Oracle VirtualBox v6以上的版本&#xff0c;…...

信息学奥赛一本通 1448:【例题1】电路维修 | 洛谷 P4667 [BalticOI 2011 Day1] Switch the Lamp On 电路维修

【题目链接】 ybt 1448&#xff1a;【例题1】电路维修 洛谷 P4667 [BalticOI 2011 Day1] Switch the Lamp On 电路维修 【题目考点】 1. 双端队列广搜&#xff08;0-1BFS&#xff09; 【解题思路】 整个电路是由一个个的正方形的电路元件组成&#xff0c;每个正方形有四个…...

k8s删除网络组件错误

k8s集群删除calico网络组件重新部署flannel网络组件&#xff0c;再部署pod后出现报错不能分配ip地址 plugin type"calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized 出现该问题是因为删除网络组件后&#xff0c;网…...

MySQL之JDBC

我们在学习完了数据库的基本操作后&#xff0c;希望和我们的Java程序建立连接&#xff0c;那么我们今天就来一探究竟JDBC是如何让Java程序与数据库建立连接的 1. 什么是JDBC JDBC&#xff08;Java Data Base Connectivity, Java数据库连接&#xff09; 是Java程序和数据库之间…...

音视频入门基础:MPEG2-TS专题(10)——PAT简介

一、引言 当某个transport packet的TS Header中的PID属性的值为0x0000时&#xff0c;该transport packet的payload为Program association table &#xff0c;即 PAT表。PAT表包含所有PMT表的目录列表&#xff0c;将program_number和PMT表的PID相关联&#xff0c;获取数据的起始…...

ElementUI:el-drawer实现在父组件区域内打开抽屉组件非全屏

我们在开发ElementUI的时候遇到抽屉组件全屏的问题&#xff0c;但是我们需要在指定div中展示出来&#xff0c;上代码&#xff1a; 1、在el-drawer中增加属性 el-drawerstyle"position: absolute"z-index"-1":append-to-body"false">// do s…...

Vue教程|搭建vue项目|Vue-CLI2.x 模板脚手架

一、项目构建环境准备 在构建Vue项目之前&#xff0c;需要搭建Node环境以及Vue-CLI脚手架&#xff0c;由于本篇文章为上一篇文章的补充&#xff0c;也是为了给大家分享更为完整的搭建vue项目方式&#xff0c;所以环境准备部分采用Vue教程&#xff5c;搭建vue项目&#xff5c;V…...

jmeter学习(7)命令行控制

jmeter -n -t E:\IOT\test2.jmx -l E:\IOT\output\output.jtl -j E:\IOT\output\jmeter.log -e -o E:\IOT\output\report IOT下创建output 文件夹&#xff0c;jmx文件名避免中文&#xff0c;再次执行output.jtl不能有数据要删除...

BGP协议路由黑洞

一、实验环境 1、分公司与运营商AS自治系统内运行IGP路由协议OSPF、RIP或静态路由&#xff0c;AS自治系统内通过IBGP路由协议建立BGP邻居关系。 2、公司AS自治系统与运营商AS自治系统间运行EBGP路由协议。 3、通过loopback建立IBGP与EBGP邻居关系&#xff0c;发挥loopback建立…...

存储结构及关系(一)

学习目标 描述数据库的逻辑结构列出段类型及其用途列出控制块空间使用的关键字获取存储结构信息 段的类型 段是数据库中占用空间的对象。它们使用数据库数据文件中的空间。介绍不同类型的段。 表 表是在数据库中存储数据的最常用方法。表段用于存储既没有集群也没有分区的表…...

玄机应急:linux入侵排查webshell查杀日志分析

目录 第一章linux:入侵排查 1.web目录存在木马&#xff0c;请找到木马的密码提交 2.服务器疑似存在不死马&#xff0c;请找到不死马的密码提交 3.不死马是通过哪个文件生成的&#xff0c;请提交文件名 4.黑客留下了木马文件&#xff0c;请找出黑客的服务器ip提交 5.黑客留…...

python爬虫安装教程

Python爬虫是用于从网站上自动抓取信息的程序。在开始之前&#xff0c;请确保您了解并遵守目标网站的服务条款&#xff0c;尊重版权法&#xff0c;并且在合理合法的范围内使用爬虫技术。 安装环境 安装Python&#xff1a;首先确保您的计算机上已经安装了Python。推荐版本为3.…...

田忌赛马五局三胜问题matlab代码

问题描述&#xff1a;在可以随机选择出场顺序的情况下&#xff0c;如果把比赛规则从三局两胜制改为五局三胜制&#xff0c;齐王胜出的概率是上升了还是下降了&#xff1f;五局三胜的赛制下&#xff0c;大家的马重新分为5个等级。前提条件仍然是齐王每种等级的马都优于田忌同等级…...

Spring循环依赖问题的解决

项目启动提示如下异常&#xff1a; The dependencies of some of the beans in the application context form a cycle 这表明在我们的应用中存在了循环依赖&#xff0c;示例&#xff1a; Bean A 中注入了Bean B依赖&#xff0c;然后 Bean B 中注入了Bean A依赖。也就是说&…...

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

1.数据集介绍 ETT(电变压器温度)&#xff1a;由两个小时级数据集&#xff08;ETTh&#xff09;和两个 15 分钟级数据集&#xff08;ETTm&#xff09;组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 traffic(交通) &#xff1a;描…...

鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)

文章目录 价值与架构定义1、价值2、架构定义 随着个人设备数量越来越多&#xff0c;跨多个设备间的交互将成为常态。基于传统 OS 开发跨设备交互的应用程序时&#xff0c;需要解决设备发现、设备认证、设备连接、数据同步等技术难题&#xff0c;不但开发成本高&#xff0c;还存…...

3步彻底解决Windows更新后开始菜单重置难题:ExplorerPatcher深度解析与实战

3步彻底解决Windows更新后开始菜单重置难题&#xff1a;ExplorerPatcher深度解析与实战 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 每次Wi…...

测试工程师如何进行测试计划制定?这5个步骤让你的计划更合理

对于软件测试从业者而言&#xff0c;一份合理可行的测试计划是项目测试工作的核心纲领&#xff0c;它不仅决定了测试活动的范围、方向与资源分配&#xff0c;更直接影响着项目的交付质量与进度管控。很多初级测试工程师常常将测试计划等同于测试时间列表&#xff0c;要么写得过…...

3步解锁网易云音乐NCM文件:免费转换工具终极指南

3步解锁网易云音乐NCM文件&#xff1a;免费转换工具终极指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式音乐无法在其他设备…...

免费图片去水印工具有哪些?2026 在线图片去水印软件推荐指南

日常刷到好看的图片想做壁纸或素材&#xff0c;角落那个突兀的水印总让人头疼。不管是自己拍摄时误触了时间水印&#xff0c;还是下载的参考图需要二次编辑&#xff0c;找到一个顺手且确实能用的去水印工具&#xff0c;是许多人在 2026 年依然高频遇到的需求。这篇文章就来整理…...

如何高效管理华硕笔记本性能:G-Helper轻量级控制工具完整指南

如何高效管理华硕笔记本性能&#xff1a;G-Helper轻量级控制工具完整指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…...

零经验想投运营?3分钟AI生成高匹配简历,告别海投无效!

“我一个零经验小白&#xff0c;简历怎么写才能打动运营岗HR啊&#xff1f;&#xff01;&#xff01;” “海投了快100份简历&#xff0c;一个面试都没有&#xff0c;我是不是不适合运营&#xff1f;” 相信这是大部分想转行或者刚毕业&#xff0c;对运营岗有点心动但完全没经…...

网盘直链解析工具:多平台文件下载的实用解决方案

网盘直链解析工具&#xff1a;多平台文件下载的实用解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …...

观察Taotoken在多模型聚合调用下的稳定性与路由表现

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察Taotoken在多模型聚合调用下的稳定性与路由表现 1. 引言 在构建依赖大模型能力的应用时&#xff0c;服务的连续性与稳定性是开…...

Unity Stencil属性丢失根因与Property ID注册机制解析

1. 这个报错不是材质丢了&#xff0c;是Unity在“认人”时看错了身份证你在Unity编辑器里猛敲CtrlS保存场景&#xff0c;突然控制台炸出一行红字&#xff1a;Material xxx doesnt have _Stencil property。你第一反应可能是——“我明明在Shader里写了_Stencil&#xff0c;也加…...

视频孪生融合落地,无感定位完胜 UWB 静态定位模式

视频孪生融合落地&#xff0c;无感定位完胜 UWB 静态定位模式数字孪生产业加速向实景化、动态化、实景融合方向纵深发展&#xff0c;视频孪生凭借实景画面与虚拟模型共生联动的特性&#xff0c;成为实体场景数字化治理的核心载体。空间定位作为视频孪生的数据根基&#xff0c;直…...