Java集合大总结——Iterator(迭代器)接口

news2024/11/19 5:42:59

Iterator接口

  • 在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator

  • Iterator接口也是Java集合中的一员,但它与CollectionMap接口有所不同。

    • Collection接口与Map接口主要用于存储元素
    • Iterator,被称为迭代器接口,本身并不提供存储对象的能力,主要用于遍历Collection中的元素
  • Collection接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,那么所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。

    • public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。
    • 集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前。
  • Iterator接口的常用方法如下:

    • public E next():返回迭代的下一个元素。
    • public boolean hasNext():如果仍有元素可以迭代,则返回 true。
  • 注意:在调用it.next()方法之前必须要调用it.hasNext()进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElementException异常

迭代器的执行原理

Iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素,接下来通过一个图例来演示Iterator对象迭代元素的过程:
在这里插入图片描述

增强for循环

  • foreach循环(也称增强for循环)是 JDK5.0 中定义的一个高级for循环,专门用来遍历数组和集合的。

  • foreach循环的语法格式:

for(元素的数据类型 局部变量 : Collection集合或数组){ 
  	//操作局部变量的输出操作
}
//这里局部变量就是一个临时变量,自己命名就可以

举个栗子:

package cn.edu.chd.exer4;

import java.util.ArrayList;

/**
 * ClassName:Main
 * Description:
 * 增强for循环的使用
 * @Create 2023/11/19 10:46
 */
public class Main {
    public static void main(String[] args) {
        //增强for循环的练习
        ArrayList<Integer> arrayList = new ArrayList<>();
        //基本数据类型进行装箱
        arrayList.add(5);
        arrayList.add(2);
        arrayList.add(0);
        arrayList.add(1);

        //使用增强for循环进行遍历
        for (Integer i: arrayList) {
            System.out.println(i);
        }

    }
}

对于集合的遍历,增强for的内部原理其实是个Iterator迭代器。如下图。
在这里插入图片描述
它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1226056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言--有 n 个人围成一圈,顺序排号。 从第 1 个人开始报数,从 1 到 3 报数,凡是报到 3 的人退出圈子,问最后留下的是原来的第几号?

今天小编给大家分享以下约瑟夫环问题的处理。 一.题目描述 有 n 个人围成一圈,顺序排号。 从第 1 个人开始报数,从 1 到 3 报数,凡是报到 3 的人退出圈子,问最后留下的是原来的第几号? 这是一个典型的约瑟夫环的问题。 二.思路分析 难点一&#xff1a;我们如何表示人退出圈…

QEMU显示虚拟化的几种选项

QEMU可以通过通过命令行"-vga type"选择为客户机模拟的VGA卡的类别,可选择的类型有多个: -vga typeSelect type of VGA card to emulate. Valid values for type arecirrusCirrus Logic GD5446 Video card. All Windows versions starting from Windows 95 should …

【设计模式】设计模式基础

设计模式基础 文章目录 设计模式基础一、七大设计原则1.1 概述1.2 单一职责原则1.3 接口隔离原则1.4 依赖倒转原则1.5 里氏替换原则1.6 开闭原则1.7 迪米特法则1.8 合成复用原则 二、UML类图2.1 概述2.2 依赖关系&#xff08;Dependence&#xff09;2.3 泛化关系(generalizatio…

YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进【NO.79】改进损失函数为VariFocal Loss

前言 作为当前先进的深度学习目标检测算法YOLOv8&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列文章&#xff0c;将重点对YOLOv8的如何改进进行详细的介绍&…

Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式

By: Ailson Jack Date: 2023.11.19 个人博客&#xff1a;http://www.only2fire.com/ 本文在我博客的地址是&#xff1a;http://www.only2fire.com/archives/164.html&#xff0c;排版更好&#xff0c;便于学习&#xff0c;也可以去我博客逛逛&#xff0c;兴许有你想要的内容呢。…

Windows 下 Sublime Text 3.2.2 下载及配置

1 下载地址&#xff1a; https://www.sublimetext.com/3 Sublime Text 3.2.2 (此版本选择了 portable version)&#xff0c;直接解压就可以使用。 https://download.sublimetext.com/Sublime Text Build 3211.zip 2 相关配置 2.1 取消自动更新(需重启)&#xff1a; Preferen…

新手必看!!超详细!STM32-基本定时器

一、基本定时器的作用 定时触发输出直接驱动DAC。 二、基本定时器的框图 以STM32F103系列为例&#xff0c;具体开发板请查看开发手册。 类别定时器总线位数计数方向预分频系数是否可以产生DMA捕获/比较通道互补输出基本定时器TIM6 / TIM7APB116位向上1~65536可以0无通用定时…

关于MySQL安装时一直卡在starting sever......手把手教你搞定

&#x1f388;&#x1f388;&#x1f388;很多人刚开始安装MySQL的时候会出现卡在starting sever..的情况&#xff0c;今天手把手教大家轻松搞定&#xff01; 首先出现这个问题的原因有两个&#xff1a; 1. 你的电脑用户名是中文的。 2. 你前一次安装的MySQL没有完全删除干净。…

Halcon (3):窗体常用语法使用

文章目录 文章专栏视频资源前言halcon图像使用加载图片示例绘制常用图像批量批注绘制 文章专栏 Halcon开发 视频资源 机器视觉之C#联合Halcon 前言 在使用halcon的算子之前&#xff0c;我们要先学会如何在图片上面进行标注。因为我们不仅要导出处理的结果&#xff0c;还要导出…

Vue3问题:如何实现el-tree树的单选?

前端功能问题系列文章&#xff0c;点击上方合集↑ 序言 大家好&#xff0c;我是大澈&#xff01; 本文约1400字&#xff0c;整篇阅读大约需要3分钟。 本文主要内容分三部分&#xff0c;第一部分是需求分析&#xff0c;第二部分是实现步骤&#xff0c;第三部分是问题详解。 …

springboot+activiti5.22.0集成Activiti在线流程设计器

SpringBoot集成Activiti5.22在线流程设计器 文章目录 SpringBoot集成Activiti5.22在线流程设计器&#x1f4dd;1.增加配置pom依赖 增加数据库及redis配置文件&#x1f4dc; 2.启动类ActivitiDesignApplication排除安全校验注解启动项目后将会自动在数据库中生成表 &#x1f4d8…

MySQL 的执行原理(二)

5.3. MySQL 的查询成本 5.3. MySQL 的查询成本 MySQL 执行一个查询可以有不同的执行方案&#xff0c;它会选择其中成本最低&#xff0c;或者 说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模 糊的&#xff0c;其实在 MySQL 中一条查询语句的执行成本…

游戏数据分析必知必会

游戏的分类 按端分类&#xff1a;端游&#xff08;steam&#xff09;&#xff0c;页游&#xff08;4399&#xff09;&#xff0c;手游&#xff08;手机&#xff0c;pad&#xff09;按盈利模式分类&#xff1a;付费游戏&#xff08;一次买断&#xff0c;后续购买其它剧情或者包…

使用内网穿透解决支付宝回调地址在公网问题

使用natapp解决内网穿透问题 前言NATAPP使用购买隧道 支付宝回调地址测试之后的学习计划 前言 最近一个项目用到了支付宝&#xff0c;但是本地调试的时候发现支付宝的回调地址需要在公网上能够访问到。为了更加方便地调试&#xff0c;就使用了natapp内网穿透&#xff0c;将回调…

FPGA语法相关知识合集

一.相关概念 1.四种结构说明语句 2.initial 与 always 的异同点 3.task 与 function 的3个不同点 4.task的语法结构(定义及调用) 5.function的语法结构(定义及调用) 6.function 的一个必须有和一个必须没有&#xff0c;使用规则 7.自动&#xff08;递归&#xff09;函数…

Win11+Modelsim SE-64 10.6d搭建UVM环境

1、添加源文件及tb文件 在目录下建立文件夹&#xff0c;将DUT和Testbench添加进去&#xff0c;文件夹内容如下所示&#xff1a; 2、以《UVM实战》中的例子做简单的示例&#xff1a; 2.1 设计文件 &#xff1a;dut.sv 功能很简单&#xff0c;即将接受到的数据原封不动发送出去…

指针与多维数组练习

例题一&#xff1a; 矩阵相乘 首先&#xff0c;如果你没学过线代的话&#xff0c;这边建议你去B站把宋浩的矩阵运算学了再来看题 如果有个矩阵A和一个矩阵B&#xff0c;当A的列数和B的行数相同时&#xff0c;生成一个新矩阵C&#xff0c;且C是通过矩阵乘法得来的 A[3][2]{3…

画中画视频剪辑:批量制作画中画视频,让视频更具吸引力和创意

在今天的视频制作环境中&#xff0c;画中画视频剪辑技术已经成为了一种主流。它不仅能增加视频的视觉吸引力&#xff0c;也可以提升观看体验。画中画视频剪辑是一种制作多个视频画面的技术&#xff0c;它可以将两个或更多的视频画面融合在一起&#xff0c;形成一个全新的视频。…

关于卓越服务的调研报告

NetSuite知识会发起的本次调研从2023年11月2日开始&#xff0c;到11月12日结束。16日已向参与调研的朋友邮件回复&#xff0c;感谢您的付出&#xff01;今朝分享此报告&#xff0c;各位同学参考。 调研问题与反馈总结 问题1&#xff1a;您能想到哪些服务组织能够提供高满意度&…

GIS杂记(三):MaxEnt模型中的图像地理范围不匹配【全网最好的方法,没有之一】

图像地理范围不匹配问题解决方法 1. 问题描述2. 问题范例3. 问题解决4. 其他参考 1. 问题描述 一般在使用全国的的生物气候变量时&#xff0c;由于其地理范围一致&#xff0c;因此不会出现地理范围不匹配的问题。但是&#xff0c;当加入其他影响因子的时候&#xff0c;如海拔、…